旋转自定义inputView为UITextView的问题
我已经写了一个自定义的input视图,用于replaceUITextView
的标准键盘。 如果我将我的自定义UIView
作为我的UITextView
的inputView
,它将在纵向和横向模式下按预期工作。
当我旋转设备时发生问题 – 每当我这样做,我的自定义UIView
扩展到填满整个屏幕,而不是只是遮住了键盘。 我没有任何自定义resize的代码 – 我从字面上只是将UIView分配为UITextView的inputView属性,然后旋转设备。
当我旋转设备时,如何让自定义键盘视图占用普通键盘占用的空间?
从Apple文档:
您可以灵活地定义input视图或input附件视图的大小和内容。 虽然这些视图的高度可以是你想要的,但它们应该与系统键盘的宽度相同。 如果UIKit在其自动识别掩码中遇到一个UIViewAutoresizingFlexibleHeight值的input视图,它将改变高度以匹配键盘。
我有这个问题。 解决这个问题的方法是:
-
打开键盘的viewcontroller .m文件
-
find
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
方法 -
让它返回NO。
我的猜测是该视图正在做一个双重旋转。
如果我记得, UIViewAutoresizingNone
默认是UIViewAutoresizingNone
。 你autoresizingMask
应该是UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin
。
使你的inputViews autoresizingMask = UIViewAutoresizingNone; 使用不同值的autoresizingMask(版本特定)将有所帮助。
这里有一些细节,我花了一些时间回来的iPad(可能这会帮助你):
- 如果input视图是拾取器视图,默认情况下会发生自动调整,这意味着帧被设置为所需的矩形。 在iPad的不同目标/版本中,这种做法存在一些差异:
-
autoresizemask
至less应该在所有目标中自动autoresizeflexiblewidth
。 - 如果在
autoresizeflexibleheight
中未启用autoresizeflexibleheight,则将Rect设置为default(initial)
高度 - 如果在
autoresizeflexibleheight
中设置autoresizeflexibleheight,则将Rect设置为不正确的坐标(x,y)。不要使用autoresizeflexibleheight
掩码作为选取器视图。
-
- 如果
inputview
不是select器视图,则应closures其用于flexibleheight
autoresizemasks
。