[翻译练习] #selector() 和响应者链

218 阅读1分钟

译自:swiftandpainless.com/selector-an…


由于 Swift 2.2 中 Selector 的新语法,我在 “Utilize the responder chain for target action” 一文中使用的方法产生了一个警告,让我们来修复它吧。

协议实现

首先,我们添加一个协议:

@objc protocol DetailShowable {
  @objc func showDetail()
}

然后,我们可以像 Andyy Hope这篇神奇的博文中描述的那样,为 Selector 添加一个扩展,代码如下:

private extension Selector {
  static let showDetail = #selector(DetailShowable.showDetail)
}

将 action 添加到响应链就会像下面这段代码一样简单:

button.addTarget(nil,
                 action: .showDetail,
                 forControlEvents: .TouchUpInside)

接下来,在响应者链中的一些响应对象需要满足 DetailShowable 协议。

你可以在 GitHub 找到相关代码。


如有任何知识产权、版权问题或理论错误,还请指正。
https://juejin.cn/post/6844903529715335176
转载请注明原作者及以上信息。