Ios UIView inputView与inputView控制器

Ios UIView inputView与inputView控制器,ios,ios7,ios8,autolayout,custom-keyboard,Ios,Ios7,Ios8,Autolayout,Custom Keyboard,在iOS7或更早版本中,我可以简单地设置UIView的inputView属性,以便在我的应用程序中实现自定义键盘。当设备旋转时,我只需将inputView的框架高度重置为横向或纵向键盘的高度,键盘高度就会正确更新 在iOS8中,所有这些都被破坏了。对inputView框架的更改将被忽略。我尝试过调整inputView的自动调整大小掩码和自动布局约束,但在其他方面也失败了 现在是否需要将UIInputViewController和UIInputView子类化以实现自定义键盘(即使它不是系统范围的键

在iOS7或更早版本中,我可以简单地设置
UIView
inputView
属性,以便在我的应用程序中实现自定义键盘。当设备旋转时,我只需将
inputView
的框架高度重置为横向或纵向键盘的高度,键盘高度就会正确更新

在iOS8中,所有这些都被破坏了。对
inputView
框架的更改将被忽略。我尝试过调整
inputView
的自动调整大小掩码和自动布局约束,但在其他方面也失败了


现在是否需要将
UIInputViewController
UIInputView
子类化以实现自定义键盘(即使它不是系统范围的键盘)?我在苹果的文档中找不到任何支持这一点的东西,但看起来可能是这样。

键盘高度问题是一个iOS8错误,子类化UIInputViewController将无法修复它。UIInputViewController的用途仅用于制作系统范围的键盘,正如苹果公司所说,如果您仅为自己的应用程序制作自定义键盘,则不应使用它

确保定制的全系统键盘确实是您想要的 发展为您的应用程序提供完全定制的键盘,或 仅在应用程序中使用自定义键补充系统键盘 iOS SDK提供了其他更好的选项。了解自定义输入视图 并在自定义视图中输入附件视图,以便在文本中输入数据 iOS编程指南

最终,我被迫开发了自己的iOS8解决方案,放弃了iOS系统键盘,通过创建自己的键盘视图结构、设置输入/输出动画、编写自定义代码以响应通常关闭键盘的系统事件,构建了一个模仿系统键盘的结构,对于苹果来说,这是一个非常可怕且代价高昂的错误,特别是当定制键盘被认为是iOS8中最伟大的新事物之一时

现在是否需要将UIInputViewController和UIInputView子类化以实现自定义键盘(即使它不是系统范围的键盘)

我不知道这是否是必需的,但如果您打算在应用程序中创建自定义键盘,则肯定建议将UIInputViewController子类化。事实上,如果你打算制作一个键盘扩展,苹果公司建议这是第一步:首先把它作为一个内部键盘,并以那种形式进行测试,然后如果你愿意的话,很容易将它移植到一个键盘扩展中

在这些情况下,您不能将UIInputView子类化;您使用输入视图控制器提供的输入视图


这完全解决了您遇到的问题,因为视图控制器是一个视图控制器,它获取与旋转和布局相关的标准视图控制器事件。此外,输入视图可以使用自动布局约束在内部进行布局,以便在调整键盘大小时,布局保持一致。

我不确定iOS 8中的自定义键盘必须采用这种方式,因为苹果现在提供了通过扩展来定制键盘的规定。你可以用这种方法设计一个完整的键盘。你知道了吗?这不是真的。将UIInputViewController用于键盘或其他仅显示在应用程序中的输入视图是非常好的。解决了尺寸问题;例如,可以使用约束从内到外设置(和更改)键盘的高度。