Variables 未检测到UITextField更改?
当文本字段包含整数时,我有两个标志属性应该更改;当文本字段编辑结束时,我有iActions更改标志。当这两个变量都为true时,这些方法应该启用一个按钮。我运行了iOS模拟器,但按钮未启用。我还为这两个文本字段声明了文本字段委托 我是swift的新手,所以请明确回答。此外,我还没有设置任何断点。以下是我目前掌握的代码:Variables 未检测到UITextField更改?,variables,swift,int,uitextfield,boolean,Variables,Swift,Int,Uitextfield,Boolean,当文本字段包含整数时,我有两个标志属性应该更改;当文本字段编辑结束时,我有iActions更改标志。当这两个变量都为true时,这些方法应该启用一个按钮。我运行了iOS模拟器,但按钮未启用。我还为这两个文本字段声明了文本字段委托 我是swift的新手,所以请明确回答。此外,我还没有设置任何断点。以下是我目前掌握的代码: var yourWeightFilled = false var calorieNumberFilled = false func textField(textField: U
var yourWeightFilled = false
var calorieNumberFilled = false
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
// Find out what the text field will be after adding the current edit
let text = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string)
if textField == yourWeightTextField {
yourWeightFilled = text.toInt() != nil
} else if textField == calorieNumberTextField {
calorieNumberFilled = text.toInt() != nil
}
return true
}
@IBAction func yourWeightEditingDidEnd(sender: AnyObject) {
if self.yourWeightFilled && self.calorieNumberFilled {
self.calculateButton.enabled = true
}
yourWeightTextField.resignFirstResponder()
}
@IBAction func calorieNumberEditingDidEnd(sender: AnyObject) {
if self.yourWeightFilled && self.calorieNumberFilled {
self.calculateButton.enabled = true
}
calorieNumberTextField.resignFirstResponder()
}
UITextField
是UIControl
的子类,因此需要调用以响应控制事件。您可以使用addTarget(quo:action:forControlEvents:)
方法来实现这一点
例如:
weightField.addTarget(self, action:"yourWeightEditingDidEnd:", forControlEvents:.EditingDidEnd);
在您的情况下,当用户完成编辑文本字段时,调用您的操作方法yourWeightEditingDiEnd()
。这假定字段属性名为weightField
。在视图控制器的viewDidLoad()
方法中有一个放置此代码的好位置
还有一个更重要的步骤。您似乎正在实现UITextFieldDelegate,这很好,因为您还需要一个textFieldShouldReturn(textField:)->Bool
方法来返回true和。例如:
func textFieldShouldReturn(textField: UITextField) -> Bool
{
textField.resignFirstResponder();
return true;
}
这反过来会导致.EditingDidEnd控件事件触发,并调用您注册的操作方法。
UITextField
是UIControl
的子类,因此需要调用以响应控件事件。您可以使用addTarget(quo:action:forControlEvents:)
方法来实现这一点
例如:
weightField.addTarget(self, action:"yourWeightEditingDidEnd:", forControlEvents:.EditingDidEnd);
在您的情况下,当用户完成编辑文本字段时,调用您的操作方法yourWeightEditingDiEnd()
。这假定字段属性名为weightField
。在视图控制器的viewDidLoad()
方法中有一个放置此代码的好位置
还有一个更重要的步骤。您似乎正在实现UITextFieldDelegate,这很好,因为您还需要一个textFieldShouldReturn(textField:)->Bool
方法来返回true和。例如:
func textFieldShouldReturn(textField: UITextField) -> Bool
{
textField.resignFirstResponder();
return true;
}
这反过来会导致.EditingDidEnd控件事件触发,并调用您注册的操作方法。
UITextField
是UIControl
的子类,因此需要调用以响应控件事件。您可以使用addTarget(quo:action:forControlEvents:)
方法来实现这一点
例如:
weightField.addTarget(self, action:"yourWeightEditingDidEnd:", forControlEvents:.EditingDidEnd);
在您的情况下,当用户完成编辑文本字段时,调用您的操作方法yourWeightEditingDiEnd()
。这假定字段属性名为weightField
。在视图控制器的viewDidLoad()
方法中有一个放置此代码的好位置
还有一个更重要的步骤。您似乎正在实现UITextFieldDelegate,这很好,因为您还需要一个textFieldShouldReturn(textField:)->Bool
方法来返回true和。例如:
func textFieldShouldReturn(textField: UITextField) -> Bool
{
textField.resignFirstResponder();
return true;
}
这反过来会导致.EditingDidEnd控件事件触发,并调用您注册的操作方法。
UITextField
是UIControl
的子类,因此需要调用以响应控件事件。您可以使用addTarget(quo:action:forControlEvents:)
方法来实现这一点
例如:
weightField.addTarget(self, action:"yourWeightEditingDidEnd:", forControlEvents:.EditingDidEnd);
在您的情况下,当用户完成编辑文本字段时,调用您的操作方法yourWeightEditingDiEnd()
。这假定字段属性名为weightField
。在视图控制器的viewDidLoad()
方法中有一个放置此代码的好位置
还有一个更重要的步骤。您似乎正在实现UITextFieldDelegate,这很好,因为您还需要一个textFieldShouldReturn(textField:)->Bool
方法来返回true和。例如:
func textFieldShouldReturn(textField: UITextField) -> Bool
{
textField.resignFirstResponder();
return true;
}
这反过来会触发.EditingDidEnd控件事件,并调用您注册的操作方法。谢谢!有一个问题,我是新来的,那么在我写的代码中,哪里是添加这两行代码的合适位置呢!谢谢我在答复中概述了这一点。您很可能应该在viewDidLoad()中执行此操作。好的。谢谢如果我有问题,我会告诉你的。非常感谢!这有帮助!还有一个问题:如果我想在值发生更改时执行此操作(我会将控件事件更改为什么而不是.EditingDidEnd)?谢谢!有一个问题,我是新来的,那么在我写的代码中,哪里是添加这两行代码的合适位置呢!谢谢我在答复中概述了这一点。您很可能应该在viewDidLoad()中执行此操作。好的。谢谢如果我有问题,我会告诉你的。非常感谢!这有帮助!还有一个问题:如果我想在值发生更改时执行此操作(我会将控件事件更改为什么而不是.EditingDidEnd)?谢谢!有一个问题,我是新来的,那么在我写的代码中,哪里是添加这两行代码的合适位置呢!谢谢我在答复中概述了这一点。您很可能应该在viewDidLoad()中执行此操作。好的。谢谢如果我有问题,我会告诉你的。非常感谢!这有帮助!还有一个问题:如果我想在值发生更改时执行此操作(我会将控件事件更改为什么而不是.EditingDidEnd)?谢谢!有一个问题,我是新来的,那么在我写的代码中,哪里是添加这两行代码的合适位置呢!谢谢我在答复中概述了这一点。您很可能应该在viewDidLoad()中执行此操作。好的。谢谢如果我有问题,我会告诉你的。非常感谢!这有帮助!还有一个问题:如果我想在值发生更改时执行此操作,我将如何执行此操作(我将如何更改控件事件而不是.EditingDidEnd)?