iphone - 在 iOS 上,如果一个 super View 的 userInteractionEnabled 是 NO,那么所有的 subview 也会被禁用吗?

标签 iphone ios uiview uikit uiresponder

我想当一个 View 被触摸或点击时,它的处理程序首先被调用,然后它的父 View 的处理程序被调用(向上传播)。

但是如果superview的userInteractionEnabled设置为NO,那么所有的subviews和offspring也不能进行用户交互是真的吗?如果我们只想禁用主视图但不想禁用 subview 怎么办?

最佳答案

您可以覆盖 hitTest(_:withEvent:) 以忽略 View 本身,但仍会向其 subview 传递触摸。

class ContainerStackView : UIStackView {
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        let result = super.hitTest(point, with: event)
        if result == self { return nil }
        return result
    }
}

关于iphone - 在 iOS 上,如果一个 super View 的 userInteractionEnabled 是 NO,那么所有的 subview 也会被禁用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10880868/

相关文章:

iphone - AudioQueue如何找出排队数据的播放长度

ios - 使用 podfile 运行 ios 项目

ios - 在 Xcode 9 中实现预处理器?

ios - 如何在全局函数中使用 AppDelegate 快速在主线程上执行选择器?

ios - 调整 subview 大小时出错

iphone - YouTube javascript API 可通过 iPad 上的 UIWebView 访问吗?

ios - 当 pickerView 出现时,UITextField 中的文本向左移动

ios - 使按钮在所有 View Controller 中持久化

iphone - 删除特定对象的自动布局约束

iphone 看不到替代内容