我有一个UIView并且我添加了点击手势

let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)

我试图在testfile中以编程方式调用它。

sendActionForEvent

我正在使用这个函数,但它不起作用:

myView.sendActionForEvent(UIEvents.touchUpDown)

它显示未识别的选择器发送到实例。

我该如何解决这个问题呢?


当前回答

我是在swift上的Xcode 6.4上完成的。见下文。

var view1: UIView!

func assignTapToView1() {          
  let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap"))
  //  tap.delegate = self
  view1.addGestureRecognizer(tap)
  self.view .addSubview(view1)

...
}

func handleTap() {
 print("tap working")
 view1.removeFromSuperview()
 // view1.alpha = 0.1
}

其他回答

你需要用目标和动作初始化UITapGestureRecognizer,如下所示:

let tap = UITapGestureRecognizer(target: self, action: "handleTap:")
tap.delegate = self
myView.addGestureRecognizer(tap)

然后,你应该实现处理程序,它将在每次tap事件发生时被调用:

func handleTap(sender: UITapGestureRecognizer) {
  // handling code
}

Swift 4的完整答案

步骤1:为视图创建一个出口

@IBOutlet weak var rightViewOutlet: UIView!

步骤2:定义一个点击手势

var tapGesture = UITapGestureRecognizer()

步骤3:创建ObjC函数(当视图被点击时调用)

@objc func rightViewTapped(_ recognizer: UIGestureRecognizer) {
    print("Right button is tapped")
}

步骤4:在viewDidLoad()中添加以下内容

let rightTap = UITapGestureRecognizer(target: self, action: #selector(ViewController.rightViewTapped(_:)))
    rightViewOutlet.addGestureRecognizer(rightTap)

这是它在Swift 3中的工作原理:

@IBOutlet var myView: UIView!
override func viewDidLoad() {
    super.viewDidLoad()

    let tap = UITapGestureRecognizer(target: self, action:#selector(handleTap))

    myView.addGestureRecognizer(tap)
}

func handleTap() {
    print("tapped")
}

斯威夫特4

首先,创建一个UITapGestureRecognizer对象

var tapGesture = UITapGestureRecognizer()

第二步是初始化UITapGestureReconizer。启用用户 交互,然后添加它。

override func viewDidLoad() {
        super.viewDidLoad()
    tapGesture = UITapGestureRecognizer(target: self, action: #selector(YourViewController.myviewTapped(_:)))
            infosView.isUserInteractionEnabled = true
            infosView.addGestureRecognizer(tapGesture)
view.addSubview(infosView)
}

第三,创建一个方法

@objc func myviewTapped(_ recognizer: UIGestureRecognizer) {
                print("button is tapped")
            }

而不是调用myView的UITapGestureRecognizer,你可以直接调用handleTap函数,