UITextView旋转自定义inputView问题

问题描述:

我写了一个自定义输入视图,用于替代UITextView的标准键盘。如果我将自定义UIView指定为我的UITextViewinputView,则它在纵向和横向模式下均按预期工作。UITextView旋转自定义inputView问题

当我旋转设备时会出现问题 - 每当我这样做,我的自定义UIView扩展到填满整个屏幕,而不是只是遮住了键盘。我没有任何自定义的调整大小代码 - 我从字面上只是将UIView分配为UITextView的inputView属性,然后旋转设备。

如何让我的自定义键盘视图仅占用正常键盘在旋转设备时占用的空间?

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

这里有一些细节,我摸索出一些时间回为iPad(可能这将帮助你):

  1. 如果输入视图是一个选择器视图,自动尺寸发生在默认情况下,这意味着 的帧被设置为所需的矩形。在iPad的不同目标/版本中,这种做法存在一些差异:
    1. autoresizemask应该至少在所有目标中都是autoresizeflexiblewidth。如果autoresizeflexibleheight不iPad3.2启用
    2. 矩形设置不当的坐标(X,Y)如果autoresizeflexibleheight在iPad4设置不使用autoresizeflexibleheight掩码选择器视图
    3. 矩形设置为default(initial)高度。
  2. 如果inputview不是选取器视图,则应关闭其autoresizemasksflexibleheight
+0

这使得它立即占据整个屏幕,这是不是我想要的。 – MusiGenesis 2011-06-09 16:39:54

默认情况下,我记得autoresizingMaskUIViewAutoresizingNone。您autoresizingMask应该是UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin

+0

这也行不通 - 旋转后视图仍然占用整个屏幕。 – MusiGenesis 2011-06-09 17:52:24

+0

你是如何实施这个的?我们可以看到一些代码吗? – 2011-06-09 18:19:11

+0

我要整理一个测试应用程序,看看我是否可以简单地复制这个问题。 – MusiGenesis 2011-06-09 18:27:38

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

  1. 打开键盘

  2. 的视图控制器.m文件查找- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation方法

  3. 让它返回NO。

我的猜测是该视图正在做双重旋转。

从苹果文档:

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

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

+0

非常感谢。这是正确的答案! :-) – 2014-03-12 14:17:23