Ios 如果我在文本字段中写入,则启用按钮
当您在文本字段中写入内容时,我在启用按钮方面遇到一些问题。 如果文本字段中没有任何内容,我将其禁用,但当您在其中写入内容时,我无法使其再次启用 我有这样的想法:Ios 如果我在文本字段中写入,则启用按钮,ios,uibutton,uitextfield,Ios,Uibutton,Uitextfield,当您在文本字段中写入内容时,我在启用按钮方面遇到一些问题。 如果文本字段中没有任何内容,我将其禁用,但当您在其中写入内容时,我无法使其再次启用 我有这样的想法: - (void)viewDidLoad { [super viewDidLoad]; NSUInteger textLength = [_Name.text length]; [_doneButton setEnabled:(textLength > 0)]; } 使用UITextFielddeleg
- (void)viewDidLoad {
[super viewDidLoad];
NSUInteger textLength = [_Name.text length];
[_doneButton setEnabled:(textLength > 0)];
}
使用
UITextField
delegate方法再次启用按钮。当您的textField
字符更改时,将调用委托方法,在此处启用您的按钮
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
_doneButton.enabled = YES;
}
试试这个
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if([textField.text length]>0){
[doneButton setEnabled:YES];
}
else{
[doneButton setEnabled:NO ;
}
希望这可能会对您有所帮助。将行放入textfield委托方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
那就行了。每次在textfield中输入字符时都会调用此方法。但只有在加载viewcontroller时才会调用ViewDidLoad
希望它能对您起作用。将委托设置为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; }
并添加如下方法
[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 {
_doneButton.enabled = YES;
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
if([textField.text length]>0){
[doneButton setEnabled:YES];
}
else{
[doneButton setEnabled:NO ;
}
您可以使用UITextField的委托来启用和禁用按钮,如下所示
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
{
if (textField.text.length!=0)
{
yourButton.enabled = YES;
}
else
{
yourButton.enabled = 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];
该部分允许按钮最初处于正确的状态。这需要放置在
shouldchangeCaractersRange:(NSRange)
放置在viewdiload
中只会在页面加载时被调用一次,然后再也不会被调用。@SKM,我尝试了你的代码,但它不起作用。我是否应该再做一些调整以使其发挥作用?@Santiago,你是如何使其发挥作用的?请让我知道,谢谢。这不是解决办法。调用textField:shouldChangeCharactersRange:replacementString:
时,文本尚未更改,因此名称中的“应”部分也未更改。如果您检查[textField.text stringByReplacingCharactersInRange:range with string:string]
的长度,它将起作用。但是你应该只检查你是否会返回YES
。不,这不会改变任何事情,我仍然有同样的问题这是最好的解决方案。其他答案在某些情况下不起作用,比如输入一个字符。但这件事解决了。我认为这是最好的解决办法。如果您有许多UITextFields,其状态可能决定按钮是否应启用,例如用户名和密码对,则特别有用