我一直在嘗試實現一個按鈕與兩個不同的觸摸事件。比方說,當用戶點擊按鈕(觸摸很短的時間),它會觸發actionTapped,當用戶長時間觸摸按鈕時會觸發actionTouched。一個按鈕與兩個不同的觸摸事件
This link可能會給出一個想法,但它會使動作重複一遍又一遍。
我一直在嘗試實現一個按鈕與兩個不同的觸摸事件。比方說,當用戶點擊按鈕(觸摸很短的時間),它會觸發actionTapped,當用戶長時間觸摸按鈕時會觸發actionTouched。一個按鈕與兩個不同的觸摸事件
This link可能會給出一個想法,但它會使動作重複一遍又一遍。
好的,這是我的解決方案。 scheduledTimerWithTimeInterval是最小間隔,使得它觸及:
- (IBAction) micButtonTouchedDownAction {
self.micButtonTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(micButtonAction:) userInfo:nil repeats:YES];
self.micButtonReleased = FALSE;
}
- (IBAction) micButtonTouchedUpInsideAction {
self.micButtonReleased = TRUE;
}
- (IBAction) micButtonTouchedUpOutsideAction {
self.micButtonReleased = TRUE;
}
- (void) micButtonAction:(NSTimer *)timer {
[self.micButtonTimer invalidate];
self.micButtonTimer = nil;
if(self.micButtonReleased) {
NSLog(@"Tapped");
}
else {
NSLog(@"Touched");
}
}
我將做到以下幾點:
touchDownTime
)。在你觸摸了方法:計算time elapsed = current time - touchDownTime
2.1轉換爲秒
2.2如果時間流逝>需要時間做動作1(長按),做別的動作2(短觸摸)
iOS SDK包含兩個適合您需求的手勢識別器:
沒有任何動作附加到其創建您的按鈕。然後創建兩個手勢識別器,每個類型中的一個,每個都映射到您想要的動作。然後將手勢識別器附加到按鈕上。
檢查此[http://stackoverflow.com/questions/4013896/detecting-long-tap-on-iphone](http://stackoverflow.com/ questions/4013896/detected-long-tap-on-iphone) – 2012-04-19 12:35:06