我有一个按钮,我用它来记录视频和从相机拍照。
点击我想拍照,按下开始录像。
[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会在点击和长按之间自动触发正确的事件。
看一下Apple文档关于https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UILongPressGestureRecognizer_Class/index.html
有一个例子:
- (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"one_answers"UIControlEventTouchUpInside"是两个不同的状态。当你开始tab按钮"UIControlEventTouchDown"被调用当你给你的手指"UIControlEventTouchUpInside"被调用。在开始和结束点击之间的时间没有其他状态。所以你不能这样做。
但是你可以尝试"UIControlEventTouchDownRepeat"状态。当用户点击按钮两次时调用。
在你的情况下,最好使用"tapGuesture"