我为一个UITextField制作了一个自定义键盘,它由18个UIButtons组成。它是一个UIView,设置为文本字段的inputView。
这些按钮是在UIView的initWithFrame:方法中使用以下代码创建的。
一旦按钮被按下,该按钮就会被设置为
我真的不知道从哪里开始寻找解决方案。我的猜测是自定义键盘绘制子视图的方式不对,但我不确定。
这是否可以通过在
编辑: 最左边的单元格只是标签,右边带有数字的单元格是UITextfields,具有自定义键盘
如何查看键盘: 一旦第三个单元格放弃第一个响应者,然后将1设为第一个响应者(所有键都禁用),然后将4设为第一个响应者后,键盘实际上看起来如何:
这些按钮是在UIView的initWithFrame:方法中使用以下代码创建的。
UIImage* buttonImage =[[UIImage imageNamed:@"keyboard-button-background.png"] stretchableImageWithLeftCapWidth:1.0 topCapHeight:79.0];
UIImage* buttonPressedImage =[[UIImage imageNamed:@"keyboard-button-pressed-background.png"] stretchableImageWithLeftCapWidth:1.0 topCapHeight:79.0];
UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:title forState:UIControlStateNormal];
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[button setBackgroundImage:buttonPressedImage forState:UIControlStateHighlighted];
button.frame = CGRectMake(xPosition, yPosition, buttonWidth, buttonHeight);
一旦按钮被按下,该按钮就会被设置为
enabled = NO
。只要其中一个按钮被启用,背景就可以完美地伸展。如果所有的按钮都被禁用,并且UITextfield resignsFirstResponder
并重新成为第一个响应者,按钮会出现,但是背景图像不再伸展(至少在垂直方向上不伸展,水平方向看起来还好)。我真的不知道从哪里开始寻找解决方案。我的猜测是自定义键盘绘制子视图的方式不对,但我不确定。
这是否可以通过在
layoutSubviews
或drawRect:
中设置背景图像来解决?水平拉伸正常工作的事实让我想知道UIButton的框架是否正确地绘制了。编辑: 最左边的单元格只是标签,右边带有数字的单元格是UITextfields,具有自定义键盘
如何查看键盘: 一旦第三个单元格放弃第一个响应者,然后将1设为第一个响应者(所有键都禁用),然后将4设为第一个响应者后,键盘实际上看起来如何:
initWithFrame:
中设置了按钮的框架。 - Josh