То, что я пытаюсь сделать, это обрабатывать сенсорные события, чтобы при прикосновении к экрану я хотел предпринять какое-то действие. Например, изменение цвета фона Что я пробовал: // Я создал подкласс контроллера табличного представления
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
tableView.backgroundColor = UIColor.orangeColor()
}
это не сработало, я подозревал, что tvc не может быть первым ответчиком, поэтому табличное представление обрабатывает события касания. Итак, я попытался:
override func viewDidLoad() {
super.viewDidLoad()
tableView.resignFirstResponder()
}
Также пробовал:
override func becomeFirstResponder() -> Bool {
return true
}
override func canBecomeFirstResponder() -> Bool {
return true
}
Ни один из них не работает. Как я могу обрабатывать события? Что мне не хватает?
ИЗМЕНИТЬ
Выбранный ответ с точки зрения нативного быстрого кода:
override func viewDidLoad() {
super.viewDidLoad()
var tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tap:")
tapGestureRecognizer.cancelsTouchesInView = true
self.tableView.addGestureRecognizer(tapGestureRecognizer)
}
func tap(recognizer: UITapGestureRecognizer) {
if recognizer.state == UIGestureRecognizerState.Ended {
var tapLocation = recognizer.locationInView(self.tableView)
var tapIndexPath : NSIndexPath? = self.tableView.indexPathForRowAtPoint(tapLocation)
if let index = tapIndexPath {
self.tableView(self.tableView, didSelectRowAtIndexPath: index)
} else {
self.tableView.backgroundColor = UIColor.orangeColor()
}
}
}