我在viewcontroller的for循环中创建了很多自己的“CustomUIButton”。 在这个“CustomUIButton”类中,我实现了一个像这样的UIGestureRecognizer:
(id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// custom things.
UILongPressGestureRecognizer* longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 1.0;
[self addGestureRecognizer:longPress];
[longPress release];
}
}
- (void) handleLongPress:(UILongPressGestureRecognizer*) recognizer{
if (recognizer.state == UIGestureRecognizerStateEnded) {
NSLog(@"Long press Ended");
}
else {
NSLog(@"Long press detected.");
// Do something
}
}
如果我使用“self”初始化目标,将调用此类中的“handleLongPress”函数。这很酷。如果我使用“nil”初始化目标,它应该检查父视图控制器,对吧?
为什么不会调用我的viewcontroller中具有相同名称的附加函数的任何想法? (对于这个测试,我已经评论了按钮类的“longpress”功能。)
答案 0 :(得分:1)
在UIGestureRecognizer的initWithTarget:action:
方法的文档中,对于target
参数,它说:
作为收件人的对象 接收者发送的动作消息 当它识别手势时。 无 不是有效值。
请注意最后一句。
文档也说这可以解释为什么它不起作用:
手势识别器没有 参与视图的响应者 链
您必须为target
指定一个值。