如何在 UILongPressGestureRecognizer iOS Swift 4 中传递多个参数?

rez*_*afi 2 target gesture uigesturerecognizer ios swift

我想在 iOS Swift 4.* 中使用 UILongPressGestureRecognizer 方法传递一些参数。

let buttonLongGesture = UILongPressGestureRecognizer(target: self, action: #selector(buttonPressedLong(_:)))
button.addGestureRecognizer(buttonLongGesture)

@objc func buttonPressedLong(_ sender:UIGestureRecognizer) {

}
Run Code Online (Sandbox Code Playgroud)

小智 5

我建议你让一个自定义类继承 UI LongPressGestureRecognizer 然后你可以在那里添加任何参数作为变量。最后,您可以使用它在手势发生时发送参数。这是一个例子。

class CustomLongPressGesture: UILongPressGestureRecognizer {
    var firstParam: String!
    var secondParam: String!
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样实现它:

func setUp() {
    let buttonLongGesture = CustomLongPressGesture(target: self, action: #selector(buttonPressedLong(_:)))
    buttonLongGesture.firstParam = "Test"
    buttonLongGesture.secondParam = "Second Test"
    button.addGestureRecognizer(buttonLongGesture)
}

 @objc func buttonPressedLong(_ sender: CustomLongPressGesture) {
    print(sender.firstParam, sender.secondParam) // Access it here
 }
Run Code Online (Sandbox Code Playgroud)