swift - iOS 响应链和事件

标签 swift uiresponder uievent

我有点困惑。有两个UIViewControllersUINavagationController的堆栈。我尝试调用 的方法第一 UIViewController第二个 UIViewController .见下面的代码

class VC1: UIViewController {

    @objc func method1() {
        //not called after tap button
    }
}

class VC2: UIViewController {

    let button = UIButton()

    override func viewDidLoad() {
        super.viewDidLoad()

        button.addTarget(nil, action: #selector(VC1.method1), for: .touchUpInside)
    }
}

但是当我点击按钮时不会调用方法1。有什么问题?

最佳答案

响应者链基于 super View 和父 View Controller 。所以 VC1 不在 VC2 的响应者链上。来自 VC2 的响应者链通向其父级(UINavigationController);它不会通过 UINavigationController 的任何其他子项。

关于swift - iOS 响应链和事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59974544/

相关文章:

swift - 快速编辑具有约束的多个文本字段时移动键盘

swift - 快速保存和检索解析中的图像

swift - 具有 3 列的 UICollectionView 不会产生所需的结果

ios - TableView 在单元格上滚动时创建多个accessoryType

ios - 如何让UIView停止接收触摸事件?

iphone - UITouch 返回 UIWebBrowserView(Apple 内部组件)而不是 UIWebView

ios - 需要 UIResponder 链解释

swift - Vapor 3 Beta 端点请求示例

ios - Annotation的calloutView上UIButton点击失败

android - 动态 react native 更改响应程序