Swift UITapGestureRecognizer无法正常工作

时间:2016-12-27 19:11:10

标签: swift uitapgesturerecognizer

我有一个简单的UITapGestureRecognizer,并在相应的方法中插入了一个print语句。以下是我写的代码:

let tap = UITapGestureRecognizer(target: self, action: #selector(self.segmentTapped(sender:)))
tap.numberOfTapsRequired = 1
self.segmentedControl.addGestureRecognizer(tap)

上面的代码是在viewDidLoad方法中执行的。

此外,其目标方法是:

func segmentTapped(sender: UITapGestureRecognizer) {
    print("called")
}

该程序存在的问题是,当segmentedControl被点击两次时,“被叫”这个词只会打印在控制台中。如果只是轻敲一次就不会打印出来。我很困惑为什么会发生这种情况,因为我已将手势的numberOfTapsRequired属性设置为1.

1 个答案:

答案 0 :(得分:0)

由于您使用 segmentedControl 来执行所需的操作。您可以使用segmentedControl的操作,而不是为segmentedControl添加GestureRecognizer。就像:

@IBAction func segmentControlValueChanged(_ sender: UISegmentedControl) {

if segmentControl.selectedSegmentIndex == 0 {
   print("called")
   } else {
    // do something else
 }
}

OR

你甚至可以使用

self.yourSegmentedControl.addTarget(self, action:#selector(segmentTapped(_:)), forControlEvents: .ValueChanged)

func segmentTapped(sender: UISegmentedControl)
{ 
   print("called")
// Do what you want
}