UITableViewController 没有响应键盘
Posted
技术标签:
【中文标题】UITableViewController 没有响应键盘【英文标题】:UITableViewController not responding to keyboard 【发布时间】:2014-08-11 11:45:04 【问题描述】:我试图让 tableview 适应 Swift 中键盘的显示。 根据文档,如果 tableview 是 UITableViewController 的子类,它应该自动调整。 已经在这里阅读了很多答案,只是为了确保我得到了所有答案:
它是 UITableViewController 的子类
class SettingsController: UITableViewController
ViewWillAppear 没有被覆盖,所以我不需要调用super.viewWillAppear(true)
我在静态 tableview 单元格中只有一个文本字段,但是当键盘出现时,tableview 不会滚动。
除此之外,我尝试实现通知
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWasShown", name: UIKeyboardDidShowNotification, object: self)
用函数
func keyboardWasShown(notification: NSNotification)
println("Keyboard shown")
但该函数永远不会被调用。
谁能帮帮我?为什么tableview没有滚动,为什么没有触发通知?
问候,
罗恩
【问题讨论】:
我可能错了,但我相信您必须在选择器后添加一个冒号以表明它需要参数,所以NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWasShown:", name: UIKeyboardDidShowNotification, object: self)
嗨,杰克,已经试过了,现在又试了一次,但没有帮助。还是谢谢。
嗨 Ron,你找到 UITableViewController 不自动滚动的原因了吗?我有同样的问题
嗨@Borbea,我从未真正找到导致问题的原因。我通过键盘通知手动修复它。
【参考方案1】:
我认为问题在于您将 self 作为对象传递给函数。 Self 是 SettingsController 类型,因此当它使用 SettingsController 参数查找名为“keyboardWasShown:”的方法时,它找不到。这可以通过两种方式解决,或者将第一行更改为传入一个 nil 值:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWasShown:", name: UIKeyboardDidShowNotification, object: nil)
或者更改方法以接受 SettingsController
func keyboardWasShown(settingsController: SettingsController)
println("Keyboard shown")
希望这能解决您遇到的任何问题。
【讨论】:
是的,就是这样。我一开始以为它会崩溃。但我认为这是将“:”添加到选择器并将对象设置为零的组合。但我仍然不明白为什么 tableviewcontroller 不会自动执行。 Apple 的文档说应该这样做。以上是关于UITableViewController 没有响应键盘的主要内容,如果未能解决你的问题,请参考以下文章
在 UITableViewController 中没有调用 cellForRowAtIndex?
在 UITableViewController 中没有调用 viewWillAppear?
UIViewController 子类(模仿 UITableViewController)没有被释放
没有在 UITableViewController 中调用 DidSelectRowAt
UITableViewController 在初始化时没有选择单元格
为啥 UIViewController 在 UINavigationBar 下扩展,而 UITableViewController 没有?