在iOS7或更早版本中,我可以简单地设置UIView的inputView属性,以便在应用程序中实现自定义键盘。当设备旋转时,我只需将inputView的帧高重置为横向或纵向键盘的高度,键盘的高度就会正确地更新。
在iOS8中,所有这些都被破坏了。对inputView框架的更改被忽略了。我尝试过调整inputView的自动调整掩码和自动调整约束,但这些限制在其他方面也失败了。
现在是否需要子类UIInputViewController和UIInputView来实现自定义键盘(即使不是系统范围的键盘)?我在苹果的文档中找不到支持这一点的任何东西,但看起来可能是这样。
发布于 2015-01-26 16:36:42
键盘高度问题是一个iOS8错误,子类UIInputViewController不会修复它。UIInputViewController的目的完全是为了做全系统的键盘,而正如苹果声明的那样,如果你只为自己的应用程序做自定义键盘,你就不应该使用它。
确保定制的、全系统的键盘确实是您想要开发的。为了为您的应用程序提供一个完全自定义的键盘,或者在您的应用程序中为系统键盘提供自定义键,iOS SDK提供了其他更好的选项。阅读自定义输入视图和自定义视图中的输入附件视图,以便在iOS文本编程指南中输入数据。
最终,我不得不开发自己的iOS8解决方案,放弃了iOS系统键盘,创建了一个模仿系统键盘的结构,创建了自己的键盘视图结构,动画化了它,编写了自定义代码来响应通常忽略键盘的系统事件,等等。对于苹果来说,允许它进入iOS8是一个非常可怕和代价高昂的错误,尤其是当定制键盘被认为是iOS8中最伟大的新事物之一时。
发布于 2017-10-01 22:33:48
现在是否需要子类UIInputViewController和UIInputView来实现自定义键盘(即使不是系统范围的键盘)?
我不知道它是否是必需的,但如果您打算在应用程序中创建自定义键盘,则建议将其子类为UIInputViewController。事实上,如果你打算做一个键盘扩展,苹果建议将此作为第一步:首先将其作为内部键盘并以这种形式进行测试,然后如果你愿意的话,很容易将它移植到键盘扩展中。
在这种情况下,您不需要子类UIInputView;您可以使用由输入视图控制器提供的输入视图。
这完全解决了您的问题,因为视图控制器是一个视图控制器,并获得与旋转和布局相关的标准视图控制器事件。此外,输入视图可以使用autolayout约束在内部布局,因此在调整键盘大小时,布局保持一致。
https://stackoverflow.com/questions/27832097
复制相似问题