在关闭键盘后让 inputAccessoryView 可见 iOS8?
Leaving inputAccessoryView visible after keyboard is dismissed iOS8?
我想制作类似消息传递应用程序的行为。我一直在浏览 Stack Overflow 寻找解决方案,确实有很多:
Leaving inputAccessoryView visible after keyboard is dismissed
这是我找到的。但是 iOS8
的情况似乎有些不同。如果我在新 iOS8 sdk
中做同样的事情,我会得到错误:
'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<UICompatibilityInputViewController: 0x7fdcb3441b10> should have parent view controller:<ViewController: 0x7fdcb3b1e9f0> but requested parent is:<UIInputWindowController: 0x7fdcb684c000>'
为了对此进行更多测试,我制作了一个示例项目,只有一个底部有视图的控制器:
插座连接到底部视图,上面只有 UITextField
。我错过了什么吗?如何获得所需的行为?
您正在将 someView
添加到多个超级视图,这会导致层次结构不一致(它告诉您)。
当键盘被激活时,它调用 inputAccessoryView()
方法来查看是否需要在键盘上粘贴任何东西,并将其添加到它自己的 superView 中。但是您已经通过故事板将其添加到视图中。
现在有两种方法可以解决这个问题:
用你的视图制作一个 .xib
并 return 你的 inputAccessoryView()
中的那个,不要自己将它添加到任何超级视图(键盘会。
或者使用 NSLayoutConstraint
.
在代码中完全实现
您可以将以下代码添加到您的 ViewController 中,即使键盘被隐藏,该代码也会保留视图。
override func canBecomeFirstResponder() -> Bool {
return true
}
查看 this GitHub repo 示例。
iOS8 与 inputAccessoryView 有一个保留周期。这是一个很好的 post,似乎有一个很好的解决方法:
http://derpturkey.com/uitextfield-docked-like-ios-messenger/
我想制作类似消息传递应用程序的行为。我一直在浏览 Stack Overflow 寻找解决方案,确实有很多:
Leaving inputAccessoryView visible after keyboard is dismissed
这是我找到的。但是 iOS8
的情况似乎有些不同。如果我在新 iOS8 sdk
中做同样的事情,我会得到错误:
'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<UICompatibilityInputViewController: 0x7fdcb3441b10> should have parent view controller:<ViewController: 0x7fdcb3b1e9f0> but requested parent is:<UIInputWindowController: 0x7fdcb684c000>'
为了对此进行更多测试,我制作了一个示例项目,只有一个底部有视图的控制器:
插座连接到底部视图,上面只有 UITextField
。我错过了什么吗?如何获得所需的行为?
您正在将 someView
添加到多个超级视图,这会导致层次结构不一致(它告诉您)。
当键盘被激活时,它调用 inputAccessoryView()
方法来查看是否需要在键盘上粘贴任何东西,并将其添加到它自己的 superView 中。但是您已经通过故事板将其添加到视图中。
现在有两种方法可以解决这个问题:
用你的视图制作一个
.xib
并 return 你的inputAccessoryView()
中的那个,不要自己将它添加到任何超级视图(键盘会。或者使用
在代码中完全实现NSLayoutConstraint
.
您可以将以下代码添加到您的 ViewController 中,即使键盘被隐藏,该代码也会保留视图。
override func canBecomeFirstResponder() -> Bool {
return true
}
查看 this GitHub repo 示例。
iOS8 与 inputAccessoryView 有一个保留周期。这是一个很好的 post,似乎有一个很好的解决方法:
http://derpturkey.com/uitextfield-docked-like-ios-messenger/