我使用一些按钮创建了一个自定义键盘。我使用界面生成器创建了它们,并创建了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/

10-10 20:39