2011-10-28 52 views
2

蘋果表示:使用UIPresentationFormSheet,爲什麼我的視圖在鍵盤上方移動時不能移動?

UIModalPresentationFormSheet 所呈現視圖的寬度和高度比屏幕的更小,並且視圖居中在屏幕上。 如果設備處於橫向並且鍵盤可見,則視圖的位置會向上調整,以便視圖保持可見。所有未被覆蓋的區域都變暗以防止用戶與其進行交互。

但是,當鍵盤可見時,我的視圖不會向上移動。我基本上想要在鍵盤上方呈現一個文本視圖,這樣用戶可以輸入文本,然後點擊發送(在呈現視圖上的導航欄按鈕中)。

我的呈現視圖是UISplitViewController(不是它的子項之一)我正在介紹UINavigationController誰的頂視圖控制器基本上是UITextView。旋轉工作,但呈現的視圖在兩個方向上都與鍵盤重疊。

我發現somequestionsasking如何調整在這種情況下,這是很好的呈現的觀點,但我不希望有由主持人或所呈現的視圖中手動調整作出假設。它似乎應該只是選擇一個體面的(無證)大小,只是在鍵盤顯示時自動將其移出。

我的呈現代碼如下所示:

MyViewController *vc = [[MyViewController alloc] init]; 
UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:vc] autorelease]; 
nav.modalPresentationStyle = UIModalPresentationFormSheet; 
[self.splitViewController presentModalViewController:nav animated:YES]; 

回答

3

當我完成了我的問題,我意識到我是在viewWillAppear我的UITextView調用becomeFirstResponder。如果將其更改爲viewDidAppear,它將起作用,這很有意義。

+4

我還發現,如果我使用becomeFirstResponder即使在viewDidAppear中,我也會收到不良效果。例如,在橫向模式下,模態視圖將錯誤居中。爲了避免這個問題,請在dispatch_async()中調用becomeFirstResponder。 – Hampden123