我的代码存在的问题是用户必须点击即可 从第四个字段到另一个字段的提交按钮 再次变得活跃我是stackoverflow的新手,也是swift编程语言的新手,我们将非常感谢任何帮助。
@IBOutlet weak var enterPlayer1: UITextField!
@IBOutlet weak var enterPlayer2: UITextField!
@IBOutlet weak var enterPlayer3: UITextField!
@IBOutlet weak var enterPlayer4: UITextField!
@IBOutlet weak var submit: UIButton!
func textFieldDidBeginEditing(textField: UITextField) -> Bool
{
if enterPlayer1.text != "" && enterPlayer2.text != "" && enterPlayer3.text != "" && enterPlayer4.text != ""
{
submit.enabled = true
} else {
submit.enabled = false
}
return true
}
override func viewDidLoad() {
super.viewDidLoad()
enterPlayer1.delegate = self
enterPlayer2.delegate = self
enterPlayer3.delegate = self
enterPlayer4.delegate = self
submit.enabled = false
//submit.enabled = false
// Do any additional setup after loading the view.
}
答案 0 :(得分:3)
我们需要在文本完成更改后查看文本字段。 UITextFieldDelegate
方法实际上没有一个回调给代表,例如" didChangeCharacters"。
相反,我们可以为此创建IBAction
。
右键单击其中一个文本字段以获取屏幕截图中的弹出菜单。单击并拖动"编辑已更改"圈入您的视图控制器类以创建方法。
现在,您可以从其他文本字段的相同位置单击并拖动,但与其他文本字段相同,而不是创建新方法,将它们挂钩到此方法中。
当你把所有东西都搞定之后,你的网点可能会是这样的:
最重要的是,这里看到所有四个文本字段都挂在了Received Actions中。我打电话给我的方法" textChanged"对于这个例子。
现在,只需编写验证码即可。在这种情况下,以下" textChanged"方法会起作用:
@IBAction func textChanged(sender: UITextField) {
self.button.enabled = self.field1.text != "" && self.field2.text != ""
&& self.field3.text != "" && self.field4.text != ""
}
虽然严格地说,由于UITextField
的{{1}}属性可以是text
,因此确切的验证会崩溃。
答案 1 :(得分:1)
我宁愿把它放到这样的动作中:
@IBAction func loginPressed(){
if(enterPlayer1.text == "" ){
myBool = NO
}
if(enterPlayer2.text == ""){
myBool = NO
}
if(enterPlayer3.text == "" ){
myBool = NO
}
if(enterPlayer4.text == ""){
myBool = NO
}
if (myBool){
//Rest of code here
}
}
答案 2 :(得分:0)
尝试覆盖以下UITextViewDelegate方法
optional func textField(_ textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool" UITextFieldDelegate method instead:
基本上,
override func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> BOOL
{
if enterPlayer1.text != "" && enterPlayer2.text != ""
&& enterPlayer3.text != "" && enterPlayer4.text != ""
{
submit.enabled = true
}
else
{
submit.enabled = false
}
return true
}