动作当我在iPhone中持有UIButton 2秒时触发

时间:2011-01-27 10:40:59

标签: ios4 ios-simulator iphone

我的应用程序中有一个UIButton,并且在TouchDown UIButton时触发了一个操作。

是否可以在iPhone上的UIButton上检测到触摸并保持?我希望当用户按住按钮2秒钟或更长时间时触发我的动作。

任何想法?

2 个答案:

答案 0 :(得分:27)

UILongPressGestureRecognizer就是您所需要的。例如,

UILongPressGestureRecognizer *longPress_gr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(doAction:)];
[longPress_gr setMinimumPressDuration:2]; // triggers the action after 2 seconds of press
[yourButton addGestureRecognizer:longPress_gr];

要让您的操作仅触发一次(即,当2秒持续时间结束时),请确保您的doAction:方法看起来像这样,

- (void)doAction:(UILongPressGestureRecognizer *)recognizer {

    if (recognizer.state == UIGestureRecognizerStateBegan) {

        // Your code here
    }
}

答案 1 :(得分:2)

另一方面,您可以使用this NBTouchAndHoldButton。这正是您想要的,并且很容易实现它:

TouchAndHoldButton * pageDownButton = [TouchAndHoldButton buttonWithType:UIButtonTypeCustom];
[pageDownButton addTarget:self action:@selector(pageDownAction:) forTouchAndHoldControlEventWithTimeInterval:0.2];
祝你好运!