如何强制 UITextView 仅显示小写字母?

How do I enforce that an UITextView shows only lower-case letters?

我正在为 iOS 开发一个社交脚本,但我只需要我的用户名登录名是小写的。我有 lowercaseString 需要进入的字符串,但我不知道在哪里。

所以这是代码:

NSString *username = [self.usernameField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];**

我应该把 .lowercaseString 放在哪里才能登录?

NSString *username = [self.usernameField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]].lowercaseString;

但是,这只能确保 username 是小写。要确保 UITextField 仅包含小写字符,您可以这样做:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
  replacementString:(NSString *)string {


   NSRange upperCharRange;
   upperCharRange = [string rangeOfCharacterFromSet:[NSCharacterSet uppercaseLetterCharacterSet]];

   if (uppercaseCharRange.location != NSNotFound) {

        textField.text = [textField.text stringByReplacingCharactersInRange:range
                                                             withString:[string lowercaseString]];
        return NO;
    }

    return YES;
}

仅当您将 <UITextFieldDelegate> 添加到 class 的 .h 文件时才会调用此方法。您还需要将 UITextField 实例的委托设置为 class 实例的自身,如下所示:

textField.delegate = (id <UITextFieldDelegate>)mainViewController;

可以放在self.usernameField.text之后,也可以放在]]之后。实际上没有任何区别,因为小写字母不影响空格或换行符。

唯一的区别是修剪字符串后,字符串可能会更短,因此转换为小写字符串将花费更少的时间(虽然不是很明显)。

因此我建议在]]:

之后添加它
NSString *username = [self.usernameField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]].lowercaseString;