let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(actionGesture(gesture: )))
self.view.addGestureRecognizer(gestureRecognizer)
}
@objc func actionGesture(gesture: UIPanGestureRecognizer){
....
}
通常我们调用函数actionGesture(gesture: some value)。但在这个例子中我们只使用手势:没有值。
最佳答案
在 swift 中,当你调用函数时,你会添加参数的值。如果您想将函数存储在变量中或将其传递给另一个函数,您可以使用它的全名,其中包括所有外部参数名称(这有助于消除重载之间的歧义,它来自 objective-c ,其中函数的选择器包括所有参数名称)。为参数添加值是没有意义的,因为您没有调用该函数,而是引用该函数本身,以便其他人稍后可以调用它(在您的情况下是手势识别器)。如果您查看任何 swift 函数的苹果文档,您就可以看到这个命名是如何工作的。例如tableView(_:cellForRowAt:) 。请注意,即使未命名的参数 _ 也是方法签名的一部分。
这是一个说明这一点的 Playground (请注意,使用参数名称可确保我们引用正确的函数):
import PlaygroundSupport
func multiply () {
print("not implmented")
}
func multiply (_ lhs: Int, by rhs: Int) -> (Int) {
return lhs * rhs
}
var myfunc = multiply(_:by:)
print(myfunc(2, 3))
输出为
6
而不是
未实现
关于ios - : works in this example? 手势如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48994285/