2010-06-05 42 views
1

編輯:好吧,這很奇怪......經過廣泛的調試後,我發現雖然文本字段正在退出第一響應者狀態(我可以看到,不再有閃爍的任何欄),但鍵盤不是下降!也許這是值得一個不同的問題。如何在彈出式窗口中使用文本字段解除iPhone OS 3.2中的鍵盤?

我有一個自定義的uiviewcontroller子類中的幾個文本字段,它顯示在彈出窗口中。彈出窗口顯示爲一個欄按鈕。當彈出消失時,我想讓鍵盤關閉(通過用戶再次敲擊酒吧按鈕或者彈出彈出窗口外),從顯示彈出窗口的視圖控制器中,當彈出窗口被解除時,以兩種方式之一我打電話

[optionsController dismissFirstResponder]; 

Optionscontroller是在酥料餅的UIViewController子類Dismissfirstresponder是我所定義的方法,包括:。

-(void)dsimissFirstResponder { 
[nameField resignFirstResponder]; 
[descriptionField resignFirstResponder]; 
[helpField resignFirstResponder]; 

} 

這些三個IBoutlets我連接在XIB到文本字段

這不起作用。任何幫助,這將不勝感激。

代碼被這樣調用: [optionsController dismissFirstResponder]; [poppoverController dismissPopoverAnimated];

我在dismissFirstResponder中設置了一個斷點,當我預期它會被調用。我也檢查過,在這個函數調用期間,所有三個IBOutlet都是非零。這些是整個應用程序中唯一的文本字段,所以我不確定除了鍵盤以外別的什麼。

+0

你的代碼是否被調用? 「dsimissFirstResponder」中有一個類型。你在popover實際關閉之前調用它嗎? – Eiko 2010-06-05 12:08:36

+0

我只是在[name point ...]處設置了一個斷點...它實際上是在它應該被調用時調用的。編輯的問題。 – 2010-06-05 15:00:51

回答

0

您需要的是接收彈出窗口的委託方法回調。你看過UIPopoverControllerDelegate的文檔嗎?下面的方法定義:

  • -popoverControllerShouldDismissPopover:
  • -popoverControllerDidDismissPopover:

這些應該被調用時,你的用戶做任何手勢關閉的酥料餅(攻外等),假設你已經爲您的popover設置了代表,並且您已在該代表中實施了此正式協議。當 - popoverControllerDidDismissPopover:被調用時,您可以在當前的控件上調用-resignFirstResponder。

// In your popover delegate 
- (void)popoverControllerDidDismissPopover: 
        (UIPopoverController *)popoverController 
{ 
    [nameField resignFirstResponder]; 
    [descriptionField resignFirstResponder]; 
    [helpField resignFirstResponder]; 
} 
+0

Ahhh ...我忘記了你可以將一個委託指定爲任何對象......我將在popover中顯示的視圖控制器子類指定爲popover的委託,並且按照你說的當我回到我的項目,看看它是否有效。 – 2010-06-05 18:21:56

+0

不幸的是,這沒有奏效。看到我上面的編輯。 – 2010-06-05 21:12:34

+0

你有沒有找到答案?我有同樣的問題 :/ – 2012-01-19 18:57:07

相關問題