没有调用目标为nil的UIButton函数?

时间:2011-05-15 12:22:22

标签: ios uibutton target

我在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”功能。)

1 个答案:

答案 0 :(得分:1)

在UIGestureRecognizer的initWithTarget:action:方法的文档中,对于target参数,它说:

  

作为收件人的对象   接收者发送的动作消息   当它识别手势时。 无   不是有效值。

请注意最后一句。

文档也说这可以解释为什么它不起作用:

  

手势识别器没有   参与视图的响应者   链

您必须为target指定一个值。