首页 文章

在XIB中添加Gesture时,iOS应用程序崩溃并显示消息“ - [UITapGestureRecognizer setFrame:]”

提问于
浏览
0

将Gesture添加到自定义视图(XIB)时,我的应用程序崩溃了 . 我正在使用Xcode版本6.4 .

以下是我使用点按手势添加自定义子视图时所遵循的步骤:

  • 在我的项目中添加了XIB和UIView子类(MyView) . 并将XIB类设置为MyView .

  • 使用Interface Builder为MyView添加了TapGesture

  • 创建了MyView对象(myView)并使用 [addSubview:myView] 将其添加为子视图 .

  • 当我运行应用程序时,它崩溃了

  • 删除了XIB中的TapGesture并再次运行,没有任何问题 .

Code:

[[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] firstObject];

Log:

  • [UITapGestureRecognizer setFrame:]:无法识别的选择器发送到实例0x7f924a4ce910

有时这样,

  • [UITapGestureRecognizer superview]:无法识别的选择器发送到实例0x7f924a4ce910

请指教 .

1 回答

  • 0

    我通过替换代码解决了这个问题,

    [[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] firstObject];
    

    MyView *myView = nil;
    NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
    for (id object in objects)
    {
      if ([object isKindOfClass:[MyView class]])
      {
        myView = object;
      }
    }
    

    Note:

    如果XIB只有一个 UIView 对象,那么上面提到的单行代码就足够了 . 但是如果XIB在XIB中添加了多个 UIView 对象或任何手势,那么我们需要从 loadNibNamed:owner:options: 方法返回的数组中找出 MyView 对象 .

相关问题