2011-06-09 43 views
0

我寫了一個自定義輸入視圖,用於替代UITextView的標準鍵盤。如果我將自定義UIView指定爲我的UITextViewinputView,則它在縱向和橫向模式下均按預期工作。UITextView旋轉自定義inputView問題

當我旋轉設備時會出現問題 - 每當我這樣做,我的自定義UIView擴展到填滿整個屏幕,而不是隻是遮住了鍵盤。我沒有任何自定義的調整大小代碼 - 我從字面上只是將UIView分配爲UITextView的inputView屬性,然後旋轉設備。

如何讓我的自定義鍵盤視圖僅佔用正常鍵盤在旋轉設備時佔用的空間?

回答

1

使你的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

1

默認情況下,我記得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

2

我有這個問題。解決這個問題的方法是:

  1. 打開鍵盤

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

  3. 讓它返回NO。

我的猜測是該視圖正在做雙重旋轉。

5

從蘋果文檔:

您定義的輸入視圖或者輸入附件視圖的大小和內容有很大的靈活性。儘管這些視圖的高度可以是您想要的,但它們應該與系統鍵盤的寬度相同。如果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