我有一个UIView并且我添加了点击手势
let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)
我试图在testfile中以编程方式调用它。
sendActionForEvent
我正在使用这个函数,但它不起作用:
myView.sendActionForEvent(UIEvents.touchUpDown)
它显示未识别的选择器发送到实例。
我该如何解决这个问题呢?
如果你想要Objective - C代码,如下所示,
UITapGestureRecognizer *gesRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; // Declare the Gesture.
gesRecognizer.delegate = self;
[yourView addGestureRecognizer:gesRecognizer]; // Add Gesture to your view.
// Declare the Gesture Recognizer handler method.
- (void)handleTap:(UITapGestureRecognizer *)gestureRecognizer{
NSLog(@"Tapped");
}
或者你想要swift代码如下所示,
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var myView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Add tap gesture recognizer to view
let tapGesture = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
myView.addGestureRecognizer(tapGesture)
}
// this method is called when a tap is recognized
func handleTap(sender: UITapGestureRecognizer) {
print("tap")
}
}
Swift 5.1三视图示例
步骤:1 ->添加storyboard视图和outlet viewController UIView
@IBOutlet var firstView: UIView!
@IBOutlet var secondView: UIView!
@IBOutlet var thirdView: UIView!
步骤:2 ->添加storyBoard视图标签
步骤:3 ->添加手势
override func viewDidLoad() {
super.viewDidLoad()
firstView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tap(_:))))
firstView.isUserInteractionEnabled = true
secondView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tap(_:))))
secondView.isUserInteractionEnabled = true
thirdView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.tap(_:))))
thirdView.isUserInteractionEnabled = true
}
步骤:4 -> select view
@objc func tap(_ gestureRecognizer: UITapGestureRecognizer) {
let tag = gestureRecognizer.view?.tag
switch tag! {
case 1 :
print("select first view")
case 2 :
print("select second view")
case 3 :
print("select third view")
default:
print("default")
}
}