我试图让 tableview 适应 Swift 中键盘的显示。 根据文档,如果 tableview 是 UITableViewController 的子类,它应该自动调整。 已经在这里阅读了很多答案,只是为了确保我已经涵盖了所有内容:
它是 UITableViewController 的子类
类 SettingsController: UITableViewController
ViewWillAppear 没有被覆盖,所以我不需要调用
super.viewWillAppear(true)
我在静态表格 View 单元格中只有一个文本字段,但是当键盘出现时,表格 View 不会滚动。
除此之外,我尝试实现通知
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWasShown", name: UIKeyboardDidShowNotification, object: self)
函数
func keyboardWasShown(notification: NSNotification) {
println("Keyboard shown")
}
但是这个函数永远不会被调用。
谁能帮帮我?为什么 tableview 不滚动,为什么不触发通知?
问候,
罗恩
最佳答案
我认为问题在于您将 self 作为对象传递给函数。 Self 属于 SettingsController 类型,因此当它查找带有 SettingsController 参数的名为“keyboardWasShown:”的方法时,找不到。这可以通过两种方式解决,要么更改第一行以传入 nil 值:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWasShown:", name: UIKeyboardDidShowNotification, object: nil)
或者改变接受 SettingsController 的方法
func keyboardWasShown(settingsController: SettingsController) {
println("Keyboard shown")
}
希望这能解决您遇到的任何问题。
关于UITableViewController 不响应键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25242513/