【问题标题】:iOS Tap Gesture in a UIScrollviewUIScrollview 中的 iOS 点击手势
【发布时间】:2011-09-11 14:02:14
【问题描述】:

我有一个 RootViewController 和它关联的 nib 或 xib 文件。这个nib 在应用程序启动时加载。这个nib 文件包含一个UIScrollView 在这个滚动视图中我放置了另一个自定义生成的nib - newNib.xib 文件。

在这个newNib.xib 中,我在界面生成器中进行了更改以响应RootViewController,即自定义类-RootViewController。然后我链接了一些我在RootViewController 中创建的 UIView 对象。到目前为止一切都很好......

我在newNib.xib 中定义的UIViews 上的RootViewController 中定义了一些tapGestureRecognisers,但它们没有响应点击事件。像这样点击我在RootViewController 中定义的事件 -

UITapGestureRecognizer *messagesTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(messagesBucketTap:)];
[messagesTap setNumberOfTapsRequired:1];
[messagesTap setNumberOfTouchesRequired:2];
[self.messagesSnippet addGestureRecognizer:messagesTap];
[messagesTap release];

这里self.messagesSnippet 出现在newNib.xib 中,我也像这样在RootViewController 中加载xib -

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

但我仍然没有将 tapGesture 传递给选择器(messagesBucketTap)。我做错了什么?

【问题讨论】:

  • 您是否声明了触发的方法 - (void)messagesBucketTap:(UITapGestureRecognizer *)gesture ?什么是messagesSnippet?

标签: objective-c ios uiview uiscrollview interface-builder


【解决方案1】:

最可能的原因是您忘记设置点击手势识别器的代理,例如[messagesTap setDelegate:self].

假设-messagesBucketTap: 在同一个类中声明,请将代码更改为:

    UITapGestureRecognizer *messagesTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(messagesBucketTap:)];
    [messagesTap setDelegate:self];
    [messagesTap setNumberOfTapsRequired:1];
    [messagesTap setNumberOfTouchesRequired:2];
    [self.messagesSnippet addGestureRecognizer:messagesTap];
    [messagesTap release];

如果这不起作用,请检查 Jamie 所说的内容,并确保您声明:

- (void)messagesBucketTap:(UITapGestureRecognizer *)gestureRecognizer;

而不是

- (void)messagesBucketTap;

另外,你是用两根手指敲击一次吗?最后,确保 UIView 上的 userInteractionEnabled 为 YES,UIScrollView 上的 exclusiveTouch 为 NO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多