Ios8 键盘关闭后,是否让inputAccessoryView可见?
我想做一些类似于短信应用的行为。我一直在浏览Stack Overflow,寻找解决方案,确实有很多: 这就是我找到的那个。但在Ios8 键盘关闭后,是否让inputAccessoryView可见?,ios8,uikeyboard,inputaccessoryview,Ios8,Uikeyboard,Inputaccessoryview,我想做一些类似于短信应用的行为。我一直在浏览Stack Overflow,寻找解决方案,确实有很多: 这就是我找到的那个。但在iOS8中,情况似乎有些不同。如果在newiOS8 sdk中执行相同的操作,则会出现错误: 'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<UICompatibilityInputViewController: 0x7fdcb3441b10> should h
iOS8
中,情况似乎有些不同。如果在newiOS8 sdk
中执行相同的操作,则会出现错误:
'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<UICompatibilityInputViewController: 0x7fdcb3441b10> should have parent view controller:<ViewController: 0x7fdcb3b1e9f0> but requested parent is:<UIInputWindowController: 0x7fdcb684c000>'
'UIViewControllerHierarchyConsistency',原因:'子视图控制器:应具有父视图控制器:但请求的父视图控制器为:'
为了进一步测试这一点,我制作了一个示例项目,只有一个底部有视图的控制器:
插座连接到底部视图,该视图上只有
UITextField
。我是否遗漏了什么?我如何获得想要的behvior 您正在将someView
添加到多个超级视图中,这会导致不一致的层次结构(它告诉您这一点)
当键盘被激活时,它调用inputAccessoryView()
方法查看是否需要在键盘顶部粘贴任何内容,并将其添加到自己的superView中。但您已经通过故事板将其添加到视图中
现在有两种方法可以解决此问题:
.xib
,并在inputAccessoryView()
中返回该视图,而不是自己将其添加到任何superview(键盘将显示)
NSLayoutConstraint
完全在代码中创建
override func canBecomeFirstResponder() -> Bool {
return true
}
请看一个例子。iOS8在inputAccessoryView中有一个保留周期。下面是一篇很好的文章,似乎有一个很好的解决方法:
您是否尝试过在代码中初始化UIView并对其进行强引用?是的,结果是相同的。好的,最后一个问题-您使用的是哪个Xcode版本?包括内部版本号和所有内容?您尝试过我的答案吗?如果成功,请接受它作为正确答案。使用该解决方案的一个大问题是在视图(而不是视图控制器)上实现inputAccessoryView是因为在导航堆栈上推视图控制器时,附件视图的动画与视图不协调。附件视图不是使用视图控制器的视图设置动画并与其滑动,而是从底部向上设置动画,而vi电子战控制器视图从右侧滑入。