2016-12-25 55 views
-1

我有一個默認輸入爲0的UITextField。當用戶點擊它時,我希望0消失,以便用戶可以輸入自己的輸入。Swift:獲取NSException試圖檢測在UITextField上的點擊

這裏是我的嘗試:

@IBOutlet weak var factInput: UITextField! 

func removeDefaultInput(textField: UITextField) -> Void { 
    factInput.text = "" 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    factInput.text = "0" 

    factInput.addTarget(self, action: Selector(("removeDefaultInput:")), for: UIControlEvents.editingDidBegin) 


    keyboardDownOnTapGesture() 
} 

然而,應用程序崩潰時,我輕按的UITextField,這是我得到的錯誤:

libc++abi.dylib: terminating with uncaught exception of type NSException 

和XCode的把我帶到這個line

class AppDelegate: UIResponder, UIApplicationDelegate { 

我該如何解決這個問題?

+0

更換'選擇(( 「removeDefaultInput:」))'和'#selector(removeDefaultInput(文本框:))' – par

+0

更好的想法是將故事板中事件的選擇器定義爲動作 –

回答

1

這是Swift 3嗎?如果是的話,那麼它的

#selector(removeDefaultInput(_:)) 

和相應的方法是

func removeDefaultInput(_ textField: UITextField) 

但是,爲什麼你編程添加行動,因爲文本字段設計爲IB?
更好地使用IBAction,那麼你可以在編譯時解決問題。

0

還有其他方法可以實現您想要做的事情。

首先是添加一個佔位符,默認值爲。如果你想檢查用戶輸入的任何東西剛入住

if(factInput.text == ""){ 
    //no text added by user and just pass 0 value instead 
} 

OR

如果你想顯示最初的一些要求,你可以只覆蓋UITextFieldDelegate中的方法讓你知道用戶是否已經開始編輯。

注:確保你的類符合UITextFieldDelegate

override func viewDidLoad() { 
    super.viewDidLoad() 

    factInput.text = "0" 

    keyboardDownOnTapGesture() 
} 


func textFieldDidBeginEditing(_ textField: UITextField) { 

    if(textField.text == "0"){ 

     textField.text = "" 
    } 
}