旋转自定义inputView for UITextView时出现问题

时间:2011-06-09 16:24:58

标签: iphone ios uitextview inputview

我编写了一个自定义输入视图,用于替换UITextView的标准键盘。如果我将自定义UIView指定为UITextView的{​​{1}},则会在纵向和横向模式下按预期工作。

当我旋转设备时会出现问题 - 每当我这样做时,我的自定义inputView会扩展以填满整个屏幕,而不是仅仅覆盖键盘。我没有任何自定义调整大小代码 - 我只是将UIView指定为UITextView的inputView属性,然后旋转设备。

当我旋转设备时,如何让自定义键盘视图占用普通键盘占用的空间?

4 个答案:

答案 0 :(得分:5)

来自Apple文档:

  

您可以灵活地定义输入视图或输入附件视图的大小和内容。虽然这些视图的高度可以是您想要的,但它们应该与系统键盘的宽度相同。如果UIKit在其自动调整掩码中遇到带有UIViewAutoresizingFlexibleHeight值的输入视图,它会更改高度以匹配键盘。

http://developer.apple.com/library/ios/#Documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/InputViews/InputViews.html#//apple_ref/doc/uid/TP40009542-CH12-SW1

答案 1 :(得分:2)

如果我记得,autoresizingMask默认为UIViewAutoresizingNone。您autoresizingMask应为UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin

答案 2 :(得分:2)

我有这个问题。解决这个问题的方法是:

  1. 打开键盘的viewcontroller .m文件

  2. 找到- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation方法

  3. 让它返回NO。

  4. 我的猜测是视图正在进行双重旋转。

答案 3 :(得分:1)

使你的inputViews autoresizingMask = UIViewAutoresizingNone; 使用不同值的autoresizingMask(特定于版本)将有所帮助。

以下是一些细节,我为iPad做了一些时间(可能会对你有帮助):

  1. 如果输入视图是Picker视图,则默认情况下会进行自动调整,这意味着 框架设置为必需的rect。在iPad的不同目标/版本中,这种方式有一点差异:
    1. autoresizemask至少应在所有目标中autoresizeflexiblewidth
    2. 如果在iPad3.2中未启用default(initial),则将Rect设置为autoresizeflexibleheight高度
    3. 如果在iPad4中设置了autoresizeflexibleheight,则将Rect设置为不正确的坐标(x,y)不要使用autoresizeflexibleheight掩码进行选择器视图。
  2. 如果inputview不是选择器视图,则应关闭其autoresizemasks flexibleheight