Swift 中的响应程序链(UIButton 目标中的 nil 目标)

Ben*_*ger 5 uibutton nsresponder ios swift

我在快速使用响应者链时遇到问题。

当我使用 nil 目标设置按钮目标时,例如:

someButton.addTarget(nil, action:"addButtonTapped:", forControlEvents: .TouchUpInside)
Run Code Online (Sandbox Code Playgroud)

该操作将沿着响应者链向上发送,直到该操作在控制器中得到处理。到目前为止,一切都很好 :-)

但我想拦截该操作,执行一些代码并将其中继到控制器。但我无法找到一种方法来快速做到这一点。在 ObjC 中,这个任务很容易完成,所以我想在 swift 中也应该有一种方法。

预先感谢您的任何帮助:-)

Ben*_*ger 5

我的一位同事给了我重新创建选择器并再次手动发送的提示。

let selector = Selector("someButtonTapped:")
let target: AnyObject? = self.nextResponder()?.targetForAction(selector, withSender: button)
UIApplication.sharedApplication().sendAction(selector, to: target, from: self, forEvent: nil)
Run Code Online (Sandbox Code Playgroud)

这将重新创建响应者链并将新消息中继到下一个响应者。

我希望有人会发现这很有用。