Я следую учебнику по iOS и читаю их код. Первый код:
override func viewDidLoad() {
super.viewDidLoad()
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(hideKeyboard))
gestureRecognizer.cancelsTouchesInView = false
tableView.addGestureRecognizer(gestureRecognizer)
}
Второй код:
@objc func hideKeyboard(_ gestureRecognizer: UIGestureRecognizer) {
let point = gestureRecognizer.location(in: tableView)
let indexPath = tableView.indexPathForRow(at: point)
if indexPath != nil && indexPath!.section == 0 && indexPath!.row == 0 {
return
}
descriptionTextView.resignFirstResponder()
}
Из того, что я понимаю, первый код разрешает исчезновение клавиатуры, когда пользователь нажимает в любом месте экрана. Для реализации этого используется шаблон Target-Action.
В первом коде, #selector(hideKeyboard)
, HideKeyboard, похоже, не имеет никакого параметра. Итак, почему в вспомогательной функции есть параметр (второй код).
Если параметр действителен, почему gestureRecognizer: UIGestureRecognizer
?
Я не совсем понимаю, как работает передача параметров?