【问题标题】:iOS 13 UIPanGestureRecognizer behave differently from iOS 12iOS 13 UIPanGestureRecognizer 的行为与 iOS 12 不同
【发布时间】:2019-11-16 23:51:39
【问题描述】:

我有一个自定义滚动视图,它在使用 UIPanGestureRecognizer 的 iOS 13 之前运行良好:

    _panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    _panRecognizer.delegate = self;

- (void)handlePan:(UIGestureRecognizer *)gestureRecognizer
{
    UIPanGestureRecognizer* pgr = (UIPanGestureRecognizer*)gestureRecognizer;
    if (pgr.state == UIGestureRecognizerStateChanged) {
        // do something
    }
}

现在它不适用于 iOS 13。handlePan 函数不会再被调用,直到 3 个手指平移在一起。在 iOS 12 中,仅移动 1 根手指时将调用此函数。

我已尝试设置 min/maximumNumberOfTouches 但无法正常工作。有什么改变吗?

【问题讨论】:

  • 什么是“自定义滚动视图”?可重现的代码在哪里?
  • 运气好吗? iOS13 中有新的选择/撤消手势很可能与检查有关 developer.apple.com/videos/play/wwdc2019/224
  • 对我来说,手势识别器翻译属性返回不正确的值。 (x:0,y:0)。在 iOS12 中运行良好。摆弄了我能找到的大多数东西:shouldRecognizeSimultaneouslyWith、最大/最小触摸次数等。平移事件触发良好,但平移值为 0,0。一旦触发事件,不知道如何从识别器本身获取正确的值。
  • 我发现了我的问题。我正在设置 .center = someValue 同时对我的视图有限制。 iOS12 曾经允许这样做。 iOS13 不再这样做了,它出现了。我从我的视图及其子视图中删除了所有约束,并且视图现在随着平移手势识别器事件移动。现在我将开始重新添加它们,看看它们中的任何一个是否可以与手动框架设置一起使用......看起来他们用框架+约束来收紧事情。我现在可能必须手动设置所有内容,并且不使用任何约束,或者将所有内容转换为约束系统。
  • 如果您解决了这个问题,请帮我看看我的问题吗?stackoverflow.com/questions/58609831/... 非常感谢

标签: ios cocoa-touch uigesturerecognizer uipangesturerecognizer


【解决方案1】:

听起来您的手势现在正在与系统手势竞争。您是否检查了视图的.gestureRecognizers 属性以查看是否发生了变化?

你可能需要实现gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:)委托方法,默认返回false。

【讨论】:

  • 我必须将其更改为 true 以使 3 点触控识别器在 iOS 13 中再次工作。
  • 如果你解决了这个问题,请帮我看看我的问题吗?stackoverflow.com/questions/58609831/...非常感谢@nontomatic
猜你喜欢
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多