簡體   English   中英

如何區分點擊並按下UIButton iOS

[英]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在點擊和長按之間自動觸發正確的事件。

看一下關於 https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UILongPressGestureRecognizer_Class/index.html的 Apple文檔

有一個例子

- (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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM