在iOS7或更早版本中,我只需设置inputView
的{{1}}属性即可在我的应用中实现自定义键盘。当设备旋转时,我只需将UIView
框架的高度重置为横向或纵向键盘的高度,键盘高度就会正确更新。
在iOS8中,所有这一切都被打破了。对inputView
框架的更改将被忽略。我已经尝试调整inputView
的自动调整掩码和自动布局限制,但这些也会以其他方式失败。
现在是否需要继承inputView
和UIInputViewController
以实现自定义键盘(即使它不是系统范围的键盘)?我无法在Apple的文档中找到支持此功能的任何内容,但似乎可能是这种情况。
答案 0 :(得分:1)
现在是否需要继承UIInputViewController和UIInputView以实现自定义键盘(即使它不是系统范围的键盘)?
我不知道是否需要它,但如果你想在你的应用程序中创建一个自定义键盘,肯定建议继承UIInputViewController。事实上,如果您计划进行键盘扩展,Apple建议将此作为第一步:首先将其作为内部键盘进行测试并以该形式进行测试,然后根据需要将其迁移到键盘扩展中。
在这种情况下你做不子类UIInputView;您使用输入视图控制器提供的输入视图。
这完全解决了您遇到的问题,因为视图控制器是一个视图控制器,并获取与旋转和布局相关的标准视图控制器事件。此外,可以使用自动布局约束在内部布置输入视图,以便在调整键盘大小时使布局保持一致。
答案 1 :(得分:0)
键盘高度问题是iOS8错误,子类化UIInputViewController不会修复它。 UIInputViewController的目的仅仅是用于制作系统范围的键盘,并且正如Apple声明here,如果您只为自己的应用程序执行自定义键盘,则不应使用它。
确保自定义系统范围的键盘确实是您想要的 开发。为您的应用或提供全自定义键盘 在您的应用程序中使用自定义键补充系统键盘 iOS SDK提供了其他更好的选择。了解自定义输入视图 并在文本中的数据输入的自定义视图中输入附件视图 iOS编程指南。
最终,我被迫开发自己的iOS8解决方案,放弃iOS系统键盘并构建一个模仿系统键盘的结构,创建我自己的键盘视图结构,动画进/出,编写自定义代码以响应系统事件通常会解除键盘等问题。这是苹果公司允许进入iOS8的一个非常可怕和昂贵的错误,特别是当自定义键盘被认为是iOS8中最棒的新事物之一时。