从笔尖加载的视图没有获得触摸事件

时间:2013-03-20 05:41:58

标签: iphone ios interface-builder xib user-interaction

我使用一些按钮创建了一个自定义键盘。我使用界面构建器创建了它们,并创建了一个CustomKeyboardView文件..

所以我有3个文件

  1. CustomKeyboardView.h
  2. CustomKeyboardView.m
  3. CustomKeyboardView.xib
  4. 我将此视图添加到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
    

    其他一些可能有助于你(帮助我)的要点

    1. 我检查并重新检查按钮处理程序。他们连接到了 IBAction
    2. 我以编程方式向键盘添加了一个按钮(Done it by 覆盖awakeFromNib)中的CustomKeyboardView.m函数 我将其添加到UIViewController时也会显示按钮。但不是 userInteraction也在那个按钮上。
    3. 有问题的UIViewController显示在a中 UIPopOverController。我们在项目中使用了故事板。
    4. 我已经添加了一些日志来查看用户交互是否正常 在kbdCustom及其超级视图中启用。答案是在 肯定

      NSLog(@"kbdCustom.userInteractionEnabled : %d"
         , kbdCustom.userInteractionEnabled);
      NSLog(@"superView.userInteractionEnabled : %d"
         , kbdCustom.superView.userInteractionEnabled);
      

      其输出

      kbdCustom.userInteractionEnabled : 1
      superView.userInteractionEnabled : 1
      
    5. 当然,所有按钮上的用户互动都是YES,而且所有按钮都是{{1}} 它们在界面构建器中启用。

    6. 我调整了键盘的框架,将其向上移动 UITextField(正确接收触摸事件)。现在当我 单击键盘按钮,它下方的UITextField即将到来 接触,好像键盘不在那里。

1 个答案:

答案 0 :(得分:4)

检查视图的自动调整大小,并设置图层clipsToBound,然后查看它是否仍然可见。如果不是那么这意味着您的视图因autoSizing缩小到最小尺寸,但它的子视图会显示在baseView的边界之外。在这种情况下,你可以看到它们,但无法触摸。