2011-01-27 3 views
14

Tôi có một UIButton trong đơn đăng ký của mình và một hành động được kích hoạt khi tôi chạm vào UIButton.Kích hoạt tác vụ khi tôi giữ UIButton trong 2 giây trong iPhone

Có thể phát hiện Chạm và giữ trên UIButton trên iPhone không? Tôi muốn hành động của mình kích hoạt khi người dùng giữ nút trong 2 giây trở lên.

Bất kỳ ý tưởng nào?

Trả lời

27

UILongPressGestureRecognizer là những gì bạn cần. Ví dụ,

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]; 

Để cho hành động của bạn được kích hoạt một lần duy nhất (ví dụ., Khi thời gian 2 giây là lên), hãy chắc chắn bạn có phương pháp doAction: của bạn trông giống như thế này,

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

    if (recognizer.state == UIGestureRecognizerStateBegan) { 

     // Your code here 
    } 
} 
+1

Tôi đã thử mã của bạn, hoạt động tốt. Nhưng có một vấn đề mà hành động của tôi kích hoạt hai lần. Trình kích hoạt hành động đầu tiên sau 2 giây và giây khi tôi kết thúc. – Siddiqui

+0

@Arman: Oh .. Tôi đã chỉnh sửa câu trả lời của mình. Tôi đoán rằng nên làm việc. kiểm tra xem nó ra. – EmptyStack

+1

Cảm ơn Simon. Nó thực sự hữu ích cho tôi. – Siddiqui

2

Mặt khác, bạn có thể sử dụng this NBTouchAndHoldButton. Đây chính là điều bạn muốn và rất dễ thực hiện:

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

Chúc may mắn!