我有一个UIButton,这个方法按下按钮
right.addTarget(sceneto, action: #selector(pageUp), for: .touchDown)
但是,我想知道是否可以在这个选择器方法中添加一个函数,而不是像这样引用一个函数本身
right.addTarget(sceneto, action: #selector({print("hello world")}), for: .touchDown)
答案 0 :(得分:1)
您可能需要阅读this answer。
它说:
选择器是Objective-C的一项功能,只能与暴露于动态Obj-C运行时的方法一起使用。你不能拥有一个纯粹的Swift方法的选择器。
调用Obj-C运行时的方法(这就是选择器引用的所有函数需要@objc
标记的原因)并且无法将闭包作为选择器传递。
答案 1 :(得分:0)
很遗憾,你无法做到这一点。选择器只是一个函数的名称,而swift中的一个闭包是一个无名的"或者"匿名"功能。
我为一个类似的问题创建了一个答案here,详细介绍了其中一个可能的情况/解决方法。