TextField - 在前导空格后启用按钮

TextField - enable button after leading whitespace

我有 _textField_saveButton,我希望 _saveButton_textField 中的前导白色 space 之后启用。

我尝试了各种代码,但这是我得到的最接近的代码:

- (IBAction)textFieldEditing 连接到 _textFieldEditing Changed 事件。

- (IBAction)textFieldEditing:(id)sender {

     if ([_textField.text isEqualToString:@""] && [_nameField.text hasPrefix:@" "]) {
         [_saveButton setEnabled:NO];
     }
     else {
      [_saveButton setEnabled:YES];
     }
}

这会在 _textField 为空或前缀为 space 时禁用 _saveButton。但是用户必须清除回到开头,然后输入文本才能启用 _saveButton。我希望在用户在前导 space 之后输入字符后立即启用 _saveButton,因为我已经实现了 trim 前导白色 space 和尾随白色space 在 - (IBAction)saveAction 中,我不介意用户用白色 space 保存。

- (IBAction)saveAction:(id)sender {

     if (![_textField.text isEqualToString:@""]) {

         NSString *trimmedString = [_nameField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

         _saveString = trimmedString;
     }
     else {
     }
 }

希望大家理解我的问题。我缺少什么代码?谢谢...

您需要将 textFieldEditing: 更新为 trim 空格并查看生成的字符串是否有任何长度:

- (IBAction)textFieldEditing:(UITextField *)textField {
    NSString *trimmedString = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    _saveButton.enabled = trimmedString.length > 0;
}

只要只有空格,此代码就会禁用该按钮。一旦用户输入任何非空白字符,该按钮将被启用。