我有一个默认输入为0的UITextField。当用户点击它时,我希望0消失,这样用户就可以输入自己的输入。
这是我的尝试:
@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带我到这一行
class AppDelegate: UIResponder, UIApplicationDelegate {
我该如何解决这个问题?
答案 0 :(得分:1)
这是Swift 3吗?如果是,那就是
#selector(removeDefaultInput(_:))
并且相应的方法是
func removeDefaultInput(_ textField: UITextField)
但是为什么要以编程方式添加动作,因为文本字段是在IB中设计的?
最好使用IBAction
,然后就可以在编译时解决问题。
答案 1 :(得分:0)
还有其他方法可以实现您的目标。
首先是添加占位符,默认情况下其值为 0 。如果你想检查用户是否输入了任何东西,只需检查 -
if(factInput.text == ""){
//no text added by user and just pass 0 value instead
}
或强>
如果您想最初显示 0 以满足某些要求,您可以覆盖UITextFieldDelegate
方法,让您知道用户是否已开始编辑。
注意:确保您的班级符合UITextFieldDelegate
override func viewDidLoad() {
super.viewDidLoad()
factInput.text = "0"
keyboardDownOnTapGesture()
}
func textFieldDidBeginEditing(_ textField: UITextField) {
if(textField.text == "0"){
textField.text = ""
}
}