2013-05-07 103 views
0

我已經檢查了其他類似的問題,但沒有一個解決了我的問題。 我有一個基於窗口的應用程序,我在同一個.xib文件中使用了更多的窗口。在第一個窗口中,我有一些文本字段,我可以隱藏鍵盤上的「完成」按鈕。在第二個窗口中,我有一個文本視圖,並且在這裏點擊「完成」鍵盤被解除。 問題是:如果我離開第一個視圖而沒有關閉鍵盤,並且我轉到第二個視圖,鍵盤沒有響應。我無法關閉它,並且按鈕不再工作。我的錯誤在哪裏?我可以重新解決這個問題嗎?更改視圖時隱藏鍵盤

我希望你能幫助我。非常感謝。

+0

你的意思是實際不同的'UIWindow's還是你通俗地指的是不同的'UIViewController's? – jszumski 2013-05-07 20:58:35

+0

我在同一個.xib中使用了不同的'UIWindow',引用了相同的UIViewController。 – CrazySoftware 2013-05-07 21:06:09

+0

你需要在同一個窗口中使用多個UIViews。不是多個UIWindows – 2013-05-07 21:09:45

回答

1

使用申報的設計方法來關閉當前:

創建通知,包括它在你的取消切換到另一個視圖的方法或方法:

NSNotification *dismissKeyboard = [NSNotification notificationWithName:@"dismissKeyboard" object:nil]; 
[[NSNotificationCenter defaultCenter] postNotification:dismissKeyboard]; 

在你的第二個視圖中添加通知監聽在viewDidLoad中:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(methodToExecute) name:@"dismissKeyboard" object:nil]; 

add方法執行時發送通知:

-(void)methodToExecute { 
    [self.textfield resignFirstResponder]; 
} 
0

您需要在更改視圖之前簡單地resignFirstResponder。不要使用第二個UIWindow,只使用一個UIWindow替換視圖。通常你使用2個viewControllers並在它們之間切換,但如果你真的想要的話,你也可以在UIWindow上使用2個不同的UIViews。