ios - UIScrollView 的 subview 不响应 ScrollView 高度动画后的触摸

标签 ios swift uiview uiscrollview uiviewanimation

我正在制作一个具有 UIScrollView 的应用程序,该应用程序在关闭时会扩展到 280 的高度并收缩到 0 的高度。我使用了 ScrollView ,因为常规 View 在动画达到 0 高度后不会“隐藏”其 subview 。最初,在 ScrollView 发生任何动画之前, subview 会按预期响应触摸,但在 View 的高度完全动画化之后,所有 subview 都会停止响应用户触摸。我尝试确保所有 subview 的 zPosition 都大于 View Controller 中的任何其他 View ,所以这不是问题。看起来所有 subview 的框架都在其 super View 的框架内。以下是我的问题的视频链接:

My Issue

以下是按下“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。对于此演示,我已经做到了,以便当应用程序第一次加载时, View 会展开,以便我可以演示 subview 在其 super View 的动画之前响应。此外,我用 ShadowView 来使其后面的 View 变暗,但它很明显位于 searchView 后面,所以这不是问题。

最佳答案

根据OP评论...

可能的问题是由于显式更改了 View 元素的框架,这些框架是使用自动布局约束设置的。常见问题,可能导致各种奇怪的错误/情况。

更改动画 View 折叠/展开方法以更改约束属性而不是显式帧更改解决了问题。

关于ios - UIScrollView 的 subview 不响应 ScrollView 高度动画后的触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52062967/

相关文章:

ios - 在 iOS 中,您将如何以编程方式将用户名/密码传递到安全站点

iOS 通用链接仅适用于一个路径

ios - Swift 正则表达式匹配 unicode

ios - 在 cellForRowAtIndexPath 中重新排序 collectionViewCells 的目标

ios - 根据另一个 UIViews 高度动态更改 Storyboard 中 UIView 的高度

ios - 无法将符合协议(protocol)的值设置为具有协议(protocol)类型的属性

ios - "Type' 程序 ' does not conform to protocol ' 任何对象 '"

json - 无法从 AFNetworking 的 responseObject 解析 JSON

ios - 计算 subview 在 UIView 圆上的圆心坐标(倒坐标系)

ios - 在 Swift 中的 UITextView 上放置阴影