繁体   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