我正在关注 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
?
我不太明白参数传递是如何工作的?