2015-08-23 55 views
-1

我是iOS新手,正在閱讀蘋果的swift教程。 在我看來,下面的代碼總是需要的,以便當用戶在文本字段中返回時,它會退出第一個響應者。爲什麼textFieldShouldReturn不會自動退出並返回true?

func textFieldShouldReturn(textField: UITextField) -> Bool { 
    textField.resignFirstResponder() 
    return true 
    } 

據我所知,迅速爲程序員提供控制此行爲的靈活性,但在什麼情況下一個真正的應用程序中我不需要這些兩行呢?在我看來,我總是需要他們,所以爲什麼不自動地做到這一點?

回答

1

這將是非常錯誤的可可假設是攻投資回報率應自動取消鍵盤。這是完全由你決定的。用戶的期望很可能是這會消除鍵盤。而且,你也可能不想讓鍵盤永遠掛在身邊。那麼,resignFirstResponder解除鍵盤。不過,假設文字有問題。當用戶點擊返回時,您可能會檢查文本和而不是關閉鍵盤。你可能會提醒一下,警告有問題。你不希望被框架的一些自動行爲所覆蓋!

順便說一句,還有其他方法可以導致竊聽返回鍵除了執行此方法以外不考慮鍵盤。在使用其他方式的應用程序中,此方法可能根本不顯示。

+0

你指的是什麼其他方式? – NickEntin

+0

例如,退出控制事件結束。 – matt

+0

謝謝!這是我想要的答案。如果我可能會問另一個問題,我什麼時候需要UIImagePickerControllerDelegate而不是UINavigationControllerDelegate?在我看來,我總是需要他們兩個 – stk

-1

這是默認設置。

但是,如果您更喜歡「自動啓用返回」,您現在可以在Swift 2.0中。

您仍然需要使您的類符合UITextFieldDelegate,並且您仍然需要在Interface Builder中配置委託。

做一個協議擴展:

extension UITextFieldDelegate { 
    func textFieldShouldReturn(textField: UITextField) -> Bool { 
    NSLog("default behavior") 
    textField.resignFirstResponder() 
    return true 
    } 
} 

不,這是你所有的應用...

你仍然可以覆蓋類中的方法的默認行爲。

+0

不能正常工作.... –

相關問題