我使用一些按钮创建了一个自定义键盘。我使用界面构建器创建了它们,并创建了一个CustomKeyboardView
文件..
所以我有3个文件
我将此视图添加到UIViewController
这样的
-(void)createCustomKeyboard{
//kbdCustom is an instance of CustomKeyboardView
kbdCustom = [[[NSBundle mainBundle] loadNibNamed:@"CustomKeyBoardView"
owner:self options:nil] objectAtIndex:0];
kbdCustom.delegate = self;
CGRect frame = kbdCustom.frame;
frame.origin.x = 14.0;
frame.origin.y = 300.0;
kbdCustom.frame = frame;
kbdCustom.backgroundColor = [UIColor clearColor];
[self.view addSubview:kbdCustom];
[self.view bringSubviewToFront:kbdCustom];
}
我在屏幕上看到自定义键盘。但我无法触摸任何一个按钮。
CustomKeyBoardView.m
文件中没什么特别的。我有一些按钮处理程序来解决键盘中每种不同类型的按钮。
@implementation CustomKeyBoardView
- (IBAction)numberPressed:(id)sender {
NSLog(@"Number pressed");
}
- (IBAction)specialCharsPressed:(id)sender {
NSLog(@"specialCharsPressed");
}
- (IBAction)clearTextPressed:(id)sender {
NSLog(@"clearTextPressed");
}
- (IBAction)enterButtonPressed:(id)sender {
NSLog(@"enterButtonPressed");
}
@end
其他一些可能有助于你(帮助我)的要点
IBAction
。awakeFromNib
)中的CustomKeyboardView.m
函数
我将其添加到UIViewController
时也会显示按钮。但不是
userInteraction也在那个按钮上。UIViewController
显示在a中
UIPopOverController
。我们在项目中使用了故事板。我已经添加了一些日志来查看用户交互是否正常
在kbdCustom
及其超级视图中启用。答案是在
肯定
NSLog(@"kbdCustom.userInteractionEnabled : %d"
, kbdCustom.userInteractionEnabled);
NSLog(@"superView.userInteractionEnabled : %d"
, kbdCustom.superView.userInteractionEnabled);
其输出
kbdCustom.userInteractionEnabled : 1
superView.userInteractionEnabled : 1
当然,所有按钮上的用户互动都是YES
,而且所有按钮都是{{1}}
它们在界面构建器中启用。
我调整了键盘的框架,将其向上移动 UITextField(正确接收触摸事件)。现在当我 单击键盘按钮,它下方的UITextField即将到来 接触,好像键盘不在那里。
答案 0 :(得分:4)
检查视图的自动调整大小,并设置图层clipsToBound
,然后查看它是否仍然可见。如果不是那么这意味着您的视图因autoSizing
缩小到最小尺寸,但它的子视图会显示在baseView
的边界之外。在这种情况下,你可以看到它们,但无法触摸。