2010-11-03 69 views
0

我正在通知和我的理解是,像「textFieldShouldBeginEditing:(UITextField *)iTextField」這樣的IOS通知只在您點擊文本字段時纔會發佈。IOS通知問題

對於我奇怪的通知,當我點擊「返回」按鈕返回到先前的視圖時,我的代碼正在接收此通知。

我有可能再次收到此通知。我相信我們不需要註冊這樣的通知。我只註冊了鍵盤隱藏/顯示通知。

請建議。

+0

請考慮使用更具描述性的問題標題。 – Justin 2010-11-03 20:41:01

回答

0

我發現這個問題。問題是我在服務器調用之前將我的文本字段添加爲第一響應者,然後只在您按下返回按鈕或打到任何其他文本字段時纔將其刪除。這就是爲什麼當按下後退按鈕時它沒有被辭退。現在我已經在服務器調用後立即辭職了。

+0

很高興你能解決這個問題,但是這與我上次評論中的建議有什麼不同? – Justin 2010-11-05 18:43:41

+0

呃,據我瞭解,按照你的方式不會幫助我,因爲我的textfield仍然是一個響應者,在keyboardwillhide方法之後,即使我們在那裏放置一個return語句,它總是會去textFieldWillRespond。 – Abhinav 2010-11-07 20:40:42

+0

是的,我開始誤解了你的問題,但最後建議你只需調用'resignFirstResponder',因爲你有一個引用該字段。這並不重要。如果有效,其他人可以在這裏找到答案,那麼一切都很好。 – Justin 2010-11-08 13:43:35

0

編輯:我誤解了這個問題。看到OP的回答。

那麼,鍵盤導航後消失。在這種情況下發布通知是有道理的。忽略通過視圖轉換生成的通知的一種方法是跟蹤視圖控制器的狀態。

- (void)viewWillDisappear:(BOOL)animated { 
    _transitioningView = YES; 
} 

- (void)viewDidDisappear:(BOOL)animated { 
    _transitioningView = NO; 
} 

- (void)viewWillAppear:(BOOL)animated { 
    _transitioningView = YES; 
} 

- (void)viewDidAppear:(BOOL)animated { 
    _transitioningView = NO; 
} 

現在,在由鍵盤通知調用的選擇器中,如果視圖正在轉換,則可以返回。

- (void)keyboardWillHide:(NSNotification*)notif { 
    if (_transitioningView) 
     return; 
    // Handle keyboard dismissal. 
} 
+0

這沒有幫助。放置返回聲明不會打破流程。它仍然帶我到textFieldShouldBeginEditing:(UITextField *)iTextField方法:( – Abhinav 2010-11-03 21:02:42

+0

然後我沒有正確理解你的問題。你是否說當你離開字段的父視圖控制器時調用'textFieldShouldBeginEditing:' – Justin 2010-11-03 21:21:43

+0

讓我當我點擊我的文本字段時,我通過self.parentController setFirstResponderView:iTextField]將該文本字段設置爲我的第一個響應者。現在,當我點擊後退按鈕時,我無法退出第一響應者爲這個文本字段,這是造成這個問題的原因 – Abhinav 2010-11-03 21:27:58