如何解决UIPanGestureRecognizer在iOS 13.0上不起作用
我正在我的视图上设置UIPanGestureRecognizer,并且我的代码在13.0之前的iOS版本上运行,但是在13.0中它无法正常工作,并且我调试了代码,它运行良好,但是没有任何翻译。
以下是在视图上设置UIPanGestureRecognizer的方法,即viewContentBG
let recognizer = UIPanGestureRecognizer(target: self,action: #selector(self.handlePan(recognizer:)))
recognizer.delegate = self
viewContentBG.isUserInteractionEnabled = true
viewContentBG.addGestureRecognizer( recognizer)
现在设置委托后,我要调用我的识别器。但是以下代码在iOS 13上不起作用,但是在13.0之前的所有版本上都可以正常工作
if recognizer.state == .changed {
let velocity = recognizer.velocity(in: self.viewContentBG)
translation = recognizer.translation(in: self.viewContentBG)
if( (velocity.x > 0 && self.viewContentBG.frame.origin.x < self.viewContentBG.frame.size.width / 3.0)){
let movedPoint = CGPoint(x: originalCenter.x+translation.x,y: originalCenter.y)
self.viewContentBG.center = movedPoint
self.btnLeftAction1.frame.origin.x = 0
self.btnLeftAction1.frame.size.width = 0
self.btnLeftAction2.frame.origin.x = 0
self.btnLeftAction2.frame.size.width = self.viewContentBG.frame.origin.x
}
在上面的代码中,以下几行最为重要,但不适用于13.0及更高版本。视图(viewContentBg)获取 有时会从错误的方向移开一点并回到其 原来的位置,有时它实际上一点也不动。
let movedPoint = CGPoint(x: originalCenter.x+translation.x,y: originalCenter.y)
self.viewContentBG.center = movedPoint
我可以怀疑13.0及更高版本中存在某种新限制 使用UIPanGestureRecognizer的iOS版本,但我确实不知道 知道是什么原因导致它无法正常工作 正确地。请帮助我,我陷入其中。及其主要特征 我的应用程序:(
解决方法
回答我自己的问题,也许对某人有用。
由于iOS13中进行了许多新更改,因此处理自动布局的方式也有所更改。因此,经过一些研究和调试,我发现手势可以正常工作并被视图检测到,但是视图进行了错误的移动(并非按照我的代码所说)
主要问题是我的视图受到外部视图的约束。而且我正在将手势应用于内部视图。内部视图是我想通过用户手势进行翻译的视图。
因此,我在内部视图中将一个属性设置为true,并且所有属性均按预期工作。以下是我设置为true的属性。
myView.translatesAutoresizingMaskIntoConstraints = true
因此,在iOS13中,自动布局约束会出现更多现象
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。