在Scroll View的高度动画后,UIScrollView的子视图不响应触摸
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Scroll View的高度动画后,UIScrollView的子视图不响应触摸相关的知识,希望对你有一定的参考价值。
我正在创建一个应用程序,其UIScrollView扩展到280的高度,并在被解雇时收缩到0的高度。我使用滚动视图,因为常规视图不会在动画后将其子视图“隐藏”到0高度。最初,在发生任何Scroll View动画之前,子视图会按预期触摸,但在视图的高度完全动画后,所有子视图都停止响应用户触摸。我已经尝试确保所有子视图的zPosition都大于视图控制器中的任何其他视图,因此这不是问题。似乎所有子视图的框架都在他们的超级视图中。以下是我的问题视频的链接:
以下是按下“parametersButton”时出现的代码:
@IBAction func parametersButtonPressed(_ sender: Any) {
UIView.animate(withDuration: 0.25, animations: {
if self.parametersExpanded {
//Close searchView, make shadowView transparent
self.searchView.frame.size.height = 0
self.parametersButton.frame = self.parametersButton.frame.offsetBy(dx: 0, dy: -280)
self.searchView.backgroundColor = UIColor.darkGray
self.shadowView.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0)
} else {
//Expand the searchView, darken shadowView
self.searchView.frame.size.height = 280
self.parametersButton.frame = self.parametersButton.frame.offsetBy(dx: 0, dy: 280)
self.searchView.backgroundColor = UIColor(red: 230/255, green: 230/255, blue: 230/255, alpha: 1)
self.shadowView.layer.zPosition = 990
self.shadowView.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.868)
}
}) { (bool) in
}
}
请注意,在我的应用程序中,searchView最初被解散,即框架高度为0.对于此演示,我已经做到了这样,当应用程序第一次加载时,视图被扩展,所以我可以证明子视图在他们的superView动画之前响应。另外,我使用shadowView来调暗它背后的视图,但它明显落后于searchView,所以这不是问题。
答案
根据OP评论......
可能的问题是由于明确更改了视图元素的框架,这些框架是使用自动布局约束设置的。常见问题,并可能导致各种奇怪的错误/条件。
将动画视图折叠/展开方法更改为更改约束属性而不是显式帧更改可以解决问题。
以上是关于在Scroll View的高度动画后,UIScrollView的子视图不响应触摸的主要内容,如果未能解决你的问题,请参考以下文章