iOS在UIScrollview中点击手势

时间:2011-09-11 14:02:14

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

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

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

我在tapGestureRecognisers RootViewController中定义了UIViews中的一些newNib.xib,但他们没有响应点击事件。点击我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 {}} {}} {}} {}} {}} {}} {}}

xib

但是我仍然没有把tapGesture带到选择器(messagesBucketTap)。我做错了什么?

1 个答案:

答案 0 :(得分:6)

最可能的原因是您 忘记设置点击手势识别器的代理 ,例如[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];

如果这不起作用,请检查杰米所说的内容,并确保您宣布:

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

而不是

- (void)messagesBucketTap;

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