У меня странная проблема с моим приложением; когда я добавляю к метке распознаватель одним касанием, он отлично работает:
private func addDoubleTabGestureRecognizerToWordLabel(){
wordLabel.isUserInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(labelClicked(gesture:)))
wordLabel.addGestureRecognizer(gestureRecognizer)
}
or
private func addDoubleTabGestureRecognizerToWordLabel(){
wordLabel.isUserInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(labelClicked(gesture:)))
gestureRecognizer.numberOfTapsRequired = 1
wordLabel.addGestureRecognizer(gestureRecognizer)
}
Но когда я меняю номер крана на что-то вроде этого,
private func addDoubleTabGestureRecognizerToWordLabel(){
wordLabel.isUserInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(labelClicked(gesture:)))
gestureRecognizer.numberOfTapsRequired = 2
wordLabel.addGestureRecognizer(gestureRecognizer)
}
Я получаю эту ошибку при нажатии на ярлык:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PolyLibrum.WordLabel showInfoAroundWordLabelWhenTabbed:]: unrecognized selector sent to instance 0x7fdea951b2d0'
Еще более странным является тот факт, что ошибка возникает, когда я нажимаю на ярлык один раз, а не дважды.
Вот функция селектора:
@objc func labelClicked(gesture: UITapGestureRecognizer) {
print("UILabel clicked")
//executed when the label is double tapped
//worked when I set the gestureRecognizer.numberOfTapsRequired = 1
let bubbleFrame = wordLabel.frame;
let translationBubble = TranslationBubble(frame: bubbleFrame)
wordFrame.addSubview(translationBubble as! UIImageView)
}
Почему распознаватель срабатывает по одному нажатию, а не по двойному? И какое отношение имеет функция селектора к количеству нажатий, необходимых для его срабатывания?
Спасибо за вашу помощь.