2013-04-26 90 views
7

我有一個自定義視圖(NotifyView)添加在UIWindow與解僱按鈕(它從UIWindow刪除它)。 當有推送通知時,添加此視圖didReceiveRemoteNotification 有幾種情況下,我可以在任何屏幕上,我的鍵盤是通過UITextfield/UITextview UP。 在此階段,如果有推動,NotifyView被添加到鍵盤後面的UIWindow。 我想辭職鍵盤一旦PUSH收到所以,我可以:從屏幕上刪除鍵盤,而不呼叫resignFirstResponder

  • 發佈與NSNotificaitonCenter一個通知辭職的所有文本框/ textviews(如果有人firstResponder)。爲此,我必須保持所有控制器中當前活動的文本框/文本視圖的活動指針。

  • 使AppDelegate中的變量並分配活性文本框/ textviews它和上PUSH,和那些在PUSH的resignFirstResponder

這兩個解決方案將需要更改所有控制器的代碼,我期待更多的東西通用的,如:

  • 能有什麼辦法,通過它我可以簡單地從卸下鍵盤屏幕上收到PUSH
  • 或我可以獲取應用程序的當前firstResponder並明確地將其退出。

這些可能是通用的解決方案。

如果有人能夠推動這個思維過程或者有人對此案有任何直接的解決方案,這將是非常有益的。

+0

複製? http://stackoverflow.com/questions/1823317/get-the-current-first-responder-without-using-a-private-api – rdurand 2013-04-26 08:33:02

回答

6

您可以使用下面

[[[UIApplication sharedApplication] keyWindow] endEditing:YES] 
+1

這對我來說非常合適......謝謝... – samfisher 2013-04-26 18:49:53

4

試試這個,對我來說,當你想給後面的重點工作正常 [yourView endEditing:YES]

+0

我正在尋找一個更通用的步驟,因爲我已經跟蹤了我的當前視圖來調用這個。 – samfisher 2013-04-26 09:12:25

+0

如果視圖中有UITextField,調用此方法實際上會調用'resignFirstResponder'。 https://developer.apple.com/reference/uikit/uiview/1619630-endediting – 2017-04-25 11:21:07

0

的問題是,。

我已經實現偵聽每個文本字段和最新的緩存。在恢復狀態之後,只會退出那個(在推送中),因此需要重點關注。

0

的方法,委託方法嘗試......

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    [self.view endEditing:YES]; // added this in for case when keyboard was already on screen 
    [self editStartDate:textField]; 
    return NO; 
}