我正在我的视图上设置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中,自动布局约束是更多的现象