我有一个简单的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.
答案 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
}