我使用一些按钮创建了一个自定义键盘。我使用界面生成器创建了它们,并创建了CustomKeyboardView
文件。
所以我有3个档案
CustomKeyboardView.h
CustomKeyboardView.m
CustomKeyboardView.xib
我将这样的视图添加到我的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
文件中没有任何内容。我有一些按钮处理程序来解决键盘中每种不同类型的按钮。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
显示在UIPopOverController
。我们在项目中使用情节提要。我已经添加了一些日志来查看用户交互是否
在
kbdCustom
及其超级视图中启用。答案在肯定
NSLog(@"kbdCustom.userInteractionEnabled : %d"
, kbdCustom.userInteractionEnabled);
NSLog(@"superView.userInteractionEnabled : %d"
, kbdCustom.superView.userInteractionEnabled);
它的输出是
kbdCustom.userInteractionEnabled : 1
superView.userInteractionEnabled : 1
当然,所有按钮上的用户交互均为
YES
,并且所有其中的一个已在界面生成器中启用。
我已经调整了键盘的框架,使其向上移动到
UITextField(正在正确接收触摸事件)。现在,当我
单击键盘按钮,它下面的UITextField
触摸,好像键盘不在那儿。
最佳答案
检查视图的自动大小调整,并将其设置为图层clipsToBound
,然后查看其是否仍然可见。如果不是,则表示由于autoSizing
,您的视图已缩小到最小尺寸,但是它的子视图显示在baseView
的边界之外。在这种情况下,您可以看到它们但无法触摸。
关于iphone - 从 Nib 加载的 View 未获得触摸事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15516176/