如何强制 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;
我正在为 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;