UITableViewController 不响应键盘

标签 uitableview swift uitextfield uikeyboard

我试图让 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/

相关文章:

ios - UIScrollView 内的多个 UITextField 在一定数量后不可单击

ios - iOS:通过表格 View 选择获取“id”值和项目

ios - 在 Swift 3/4 中单击按钮时视频无法打开?

swift - 获取节点的rootNode

ios - 从烦人格式的字典中提取值

ios - 如何阻止用户不在 UITextView iOS 中的文本开头键入空格?

iphone - 占位符右对齐的 UITextField 无法正确移动到右侧

ios - 按距离排序 Swift 3

ios - 当我更改字体时,UITableViewCell textLabel 未垂直对齐

iOS UITableViewCell 自动调整大小错误