当您在 TextField 中编写内容时,我在启用按钮时遇到了一些问题。如果 TextField 中没有任何内容,我将其禁用,但当您在其中写入内容时,我无法再次启用它。
我有这样的事情:
- (void)viewDidLoad {
[super viewDidLoad];
NSUInteger textLength = [_Name.text length];
[_doneButton setEnabled:(textLength > 0)];
}
当您在 TextField 中编写内容时,我在启用按钮时遇到了一些问题。如果 TextField 中没有任何内容,我将其禁用,但当您在其中写入内容时,我无法再次启用它。
我有这样的事情:
- (void)viewDidLoad {
[super viewDidLoad];
NSUInteger textLength = [_Name.text length];
[_doneButton setEnabled:(textLength > 0)];
}
将委托设置为 UITextField 并在 ViewDidLoad 中创建一个用于文本更改的方法,如下所示。
[self.textFieldTemp addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
并添加方法如下。
- (void)textFieldDidChange:(UITextField *)textField {
if(textField == self.textFieldTemp)
self.buttonTemp.enabled = ([self.textFieldTemp.text length] > 0) ? YES : NO; }
尝试这个
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if([textField.text length]>0){
[doneButton setEnabled:YES];
}
else{
[doneButton setEnabled:NO ;
}
希望这可能对您有所帮助..
将这些行放在文本字段委托方法中:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
那它会起作用的。每次在文本字段中输入字符时都会调用此方法。但是 ViewDidLoad 仅在加载视图控制器时调用。
希望它对你有用。
使用UITextField
委托方法再次启用您的按钮。当你的textField
角色改变时,委托方法将被调用,在这里启用你的按钮。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
_doneButton.enabled = YES;
}
您可以使用 UITextField 的委托来启用和禁用这样的按钮。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
{
if (textField.text.length!=0)
{
yourButton.enabled = YES;
}
else
{
yourButton.enabled = NO;
}
}
这两个功能将根据您的文本字段中的文本启用和禁用您的按钮
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
_doneButton.enabled = YES;
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
if([textField.text length]>0){
[doneButton setEnabled:YES];
}
else{
[doneButton setEnabled:NO ;
}
我使用的方法根本没有使用委托。我在控制器类中创建了这个方法:
- (IBAction)textFieldChanged:(id)sender
{
self.doneButton.enabled = ([self.Name.text length] > 0) ? YES : NO;
}
然后,在 Interface Builder 中,我将文本字段“Editing Changed”操作设置为针对新方法。然后,类似于@Paramasivan Samuttiram,我在viewDidLoad:
.
[self textFieldChanged:self.Name];
该部分允许按钮最初处于正确状态。