UPDATED ANSWER
这是经过测试并在每个单词后按空格键时打印“ThisIsATest”。我用Swift不太好,所以这个片段在Obj-C中。这非常简单。一定要将你的textField的委托设置为代码或IB中的ViewController。
#import "ViewController.h"
@interface ViewController() <UITextFieldDelegate>
@property (nonatomic, assign) BOOL shouldCapitalizeNextChar;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.shouldCapitalizeNextChar = YES;
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([string isEqualToString:@" "]) {
self.shouldCapitalizeNextChar = YES;
return NO;
}
if (self.shouldCapitalizeNextChar) {
NSString *capitalizedChar = [string capitalizedString];
textField.text = [textField.text stringByAppendingString:capitalizedChar];
self.shouldCapitalizeNextChar = NO;
return NO;
}
return YES;
}
@end
与以前一样,这不适用于复制和粘贴的文本。但它应该可以帮助你明白这个想法。
原来的答案
为UITextField知道如何autocapitalize每个字,如果这是你在你的应用程序想要的只是使用:
对象 -
textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
斯威夫特
textField.autocapitalizationType = UITextAutocapitalizationType.Words
请注意t他只是对用户的建议,他/她可以通过按shift键来覆盖它。如果使用粘贴选项,它也不起作用。
我认为UITextField基于空格的添加(从空格键)来识别单词,对于这种情况,空格键是禁用的,所以我能想到的唯一方法是能够打开我不介意用户是否决定通过再次按Shift来覆盖它。 – spigen
@spigen查看更新后的答案。它没有点亮shift键,但它起作用。 – NKorotkov