【发布时间】:2012-11-15 11:39:27
【问题描述】:
我为 UITextField 制作了一个自定义键盘,由 18 个 UIButtons 组成。它是一个 UIView,它被设置为文本字段的 inputView。
按钮是在 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 然后 UITextField 再次成为 First Responder,则按钮出现但背景图像似乎不再拉伸(至少在垂直方向上没有,水平方向看起来很好)。
我不确定从哪里开始寻找解决方案。我的猜测是自定义键盘绘制子视图的方式,但我不确定。
可以通过将背景图像设置为layoutSubviews 或drawRect: 或类似的东西来解决这个问题吗?水平拉伸效果很好的事实让我想知道 UIButton 的框架是否在绘制时不正确。
编辑 最左边的单元格只是标签,右边带有数字的单元格是 UITextfields 并有自定义键盘
键盘的外观:
一旦在单元格 3 上放弃了第一响应者,然后给了 1 个第一响应者(所有键都被禁用),然后给了 4 个第一响应者,键盘的实际外观:
【问题讨论】:
-
你能附上一些截图吗?很难想象这应该是什么样子。
-
你在哪里设置你的矩形?
-
我已经添加了行,我在
initWithFrame:中设置了按钮的框架
标签: ios uibutton uiimage uikeyboard