【问题标题】:Gesture Recognizer手势识别器
【发布时间】:2012-09-14 17:39:27
【问题描述】:

我在屏幕的某些部分有一个UIView。这个 UIView 有平移手势识别器。这个 UIView (mainVw) 有一个UITextView,它完全覆盖了 UIView。此 UITextview 具有滑动手势(向左和书写)。

我的问题是当我向左或向右滑动时,UIView 也开始拖动。我想要的是,当我拖动 UIView 时它应该拖动,当我滑动 UITextView 时应该向左滑动写入但不拖动。

这是我用来更好理解的代码:

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [panGesture setMinimumNumberOfTouches:1];
    panGesture.delegate =(id)self;
    [self.mainVw addGestureRecognizer:panGesture];
    //[self.mainVw.layer setValue:[NSValue valueWithCGPoint:vwCaptionBg.center] forKey:@"originalCenter"];


UISwipeGestureRecognizer *rightRecognizer;
rightRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanTouch:)];
[rightRecognizer setDirection: UISwipeGestureRecognizerDirectionRight];
rightRecognizer.delegate=(id)self;
[self.txtVw addGestureRecognizer:rightRecognizer];


UISwipeGestureRecognizer *vwLeftRecognizer;
vwLeftRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanTouch:)];
[vwLeftRecognizer setDirection: UISwipeGestureRecognizerDirectionLeft];
vwLeftRecognizer.delegate=(id)self;
[self.txtVw addGestureRecognizer:vwLeftRecognizer];

【问题讨论】:

    标签: ios uigesturerecognizer uipangesturerecognizer uiswipegesturerecognizer


    【解决方案1】:

    您可以尝试使用[GESTURE requireGestureRecognizerToFail:GESTURE_TO_FAIL]; 方法。这将是您的滑动需要失败,然后才能允许锅继续进行。

    您还可以将委托方法用于同时手势。

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
    

    或者,您可以将这些委托方法中的任何一个与您自己的逻辑一起使用。

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
    

    【讨论】:

    • 嗨瑞恩,感谢您的回答,当我滑动时,它只会首先调用 Pan 手势,但我想滑动。这就是问题
    • 正确,所以只需要在平移开始使用 [pan requireGestureRecognizerToFail:swipe] 之前您的滑动手势失败
    • 非常感谢 Ryan,这将我的问题解决了 50%,但在滑动它开始拖动时仍有一段时间。你能帮我进一步吗
    • 您是否为每次滑动都调用了该方法?
    • 是的,我是这样做的:[panGesture requireGestureRecognizerToFail:rightRecognizer]; [panGesture requireGestureRecognizerToFail:vwLeftRecognizer];
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 2023-03-04
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多