[英]how to differentiate click and press on UIButton iOS
我有一個按鈕,我用來錄制視頻和從相機拍照。
點擊我想拍照並按下開始視頻錄制。
[self.recordButton addTarget:self action:@selector(recordTouchCancel:) forControlEvents:UIControlEventTouchCancel];
[self.recordButton addTarget:self action:@selector(recordTouchDown:) forControlEvents:UIControlEventTouchDown];
[self.recordButton addTarget:self action:@selector(recordTouchUp:) forControlEvents:UIControlEventTouchUpInside];
[self.recordButton addTarget:self action:@selector(recordTouchUp:) forControlEvents:UIControlEventTouchUpOutside];
按錄制工作完美但無法點擊,如何區分點擊並按住UIButton。
有什么建議么 ?
我想你可能會尋找UILongPressGestureRecognizer
。 我注意到API在點擊和長按之間自動觸發正確的事件。
有一個例子 :
- (void)viewDidLoad {
// FRIST SET TARGET & SELECTOR TO BUTTON
UILongPressGestureRecognizer * pressLong = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(takeVideo:)];
[self.recordButton addGestureRecognizer:pressLong];
[self.recordButton addTarget:self action:@selector(takePicture:) forControlEvents:UIControlEventTouchUpInside];
}
-(void)takePicture:(UIButton*) sender {
// TAKE PIC
}
-(void)takeVideo : (UILongPressGestureRecognizer*) gesture {
NSInteger state = gesture.state;
switch (state) {
case UIGestureRecognizerStateChanged: break;
case UIGestureRecognizerStateBegan:
//START RECORD
break;
case UIGestureRecognizerStateEnded:
//END RECORD
break;
}
}
“UIControlEventTouchDown”和“UIControlEventTouchUpInside”是兩種不同的狀態。 當你開始選項卡按鈕“UIControlEventTouchDown”被調用時,當你給你手指“UIControlEventTouchUpInside”被調用時,你的點擊開始和結束之間的時間沒有其他狀態。 所以你不能這樣做。
但是你可以嘗試“UIControlEventTouchDownRepeat”狀態。 當用戶在按鈕上點擊兩次時調用此方法。
在你的情況下,最好使用“tapGuesture”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.