Ios 如何在Objective-C中实现扫持手势识别器?
我正在开发一个应用程序,它可以像遥控器一样控制不同的设备,如游戏机、机顶盒等 应用程序包含不同类型的控件,如手势和按钮,以远程方式执行事件 单手势视图包含多个手势识别器,如下所示:Ios 如何在Objective-C中实现扫持手势识别器?,ios,objective-c,uigesturerecognizer,uiswipegesturerecognizer,uilongpressgesturerecogni,Ios,Objective C,Uigesturerecognizer,Uiswipegesturerecognizer,Uilongpressgesturerecogni,我正在开发一个应用程序,它可以像遥控器一样控制不同的设备,如游戏机、机顶盒等 应用程序包含不同类型的控件,如手势和按钮,以远程方式执行事件 单手势视图包含多个手势识别器,如下所示: 使用UITapGestureRecognitor进行1次手指点击 使用UITapGestureRecognitor进行2次手指点击 使用UISweepGestureRecognitor进行1次手指滑动 使用UISweepGestureRecognitor进行2次手指滑动 我的要求是实现1个手指滑动手势识别器以及保持事
提前谢谢 使用UIGestureRecognitor endstate在
SwipegestureSignle\u Handle
方法中初始化另一个手势。@iPhonec:我已经这样做了,但UILongPressGestureRecognitor仍然与UISweepGestureRecognitor一起工作。您的代码表明您正在与SwipeGesture一起添加长手势,最初不要添加它,只在刷卡结束后添加。@yashica15:希望这有帮助:@Mrunal:我已经试过了。不符合我的要求。谢谢
-(void) gestureView:(UIView*)viewGesture {
UISwipeGestureRecognizer *swipeGestureSingleRight;
UISwipeGestureRecognizer *swipeGestureSingleLeft;
UISwipeGestureRecognizer *swipeGestureSingleUp;
UISwipeGestureRecognizer *swipeGestureSingleDown;
swipeGestureSingleUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureSingle_Handle:)];
[swipeGestureSingleUp setDelegate:self];
[swipeGestureSingleUp setDirection:(UISwipeGestureRecognizerDirectionUp)];
[swipeGestureSingleUp setNumberOfTouchesRequired:1];
[viewGesture addGestureRecognizer:swipeGestureSingleUp];
swipeGestureSingleDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureSingle_Handle:)];
[swipeGestureSingleDown setDelegate:self];
[swipeGestureSingleDown setDirection:(UISwipeGestureRecognizerDirectionDown)];
[swipeGestureSingleDown setNumberOfTouchesRequired:1];
[viewGesture addGestureRecognizer:swipeGestureSingleDown];
swipeGestureSingleRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureSingle_Handle:)];
[swipeGestureSingleRight setDelegate:self];
[swipeGestureSingleRight setDirection:(UISwipeGestureRecognizerDirectionRight)];
[swipeGestureSingleRight setNumberOfTouchesRequired:1];
[viewGesture addGestureRecognizer:swipeGestureSingleRight];
swipeGestureSingleLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGestureSingle_Handle:)];
[swipeGestureSingleLeft setDelegate:self];
[swipeGestureSingleLeft setDirection:(UISwipeGestureRecognizerDirectionLeft)];
[swipeGestureSingleLeft setNumberOfTouchesRequired:1];
[viewGesture addGestureRecognizer:swipeGestureSingleLeft];
longPressGestureOnSwipe = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGesture_Handle:)];
longPressGestureOnSwipe.minimumPressDuration = 0.03;
longPressGestureOnSwipe.delegate = self;
[viewGesture addGestureRecognizer:longPressGestureOnSwipe];
isSwipeEnd = false;
[longPressGestureOnSwipe setEnabled:isSwipeEnd];
}
- (void)swipeGestureSingle_Handle:(UISwipeGestureRecognizer*)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
singleTouchSwipeSenderDirection = sender.direction;
isSwipeEnd = true;
[longPressGestureOnSwipe setEnabled:isSwipeEnd];
}
}
-(void)longPressGesture_Handle:(UILongPressGestureRecognizer*)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
isSwipeEnd = false;
[longPressGestureOnSwipe setEnabled:isSwipeEnd];
}
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
- (void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
if (isSwipeEnd) {
[super touchesBegan:touches withEvent:event];
} else {
return;
}
}