如何在objective-c / interface builder中将字数限制应用于UITextView。?
我一直在搜索并找到了字符数,但没有字数......
Cany任何人都给我任何指示......
答案 0 :(得分:6)
您可以只计算空格数并限制它。这是一个黑客,但它的确有效。
您可以在
中执行此操作- (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString*)aText
使用其中一种NSString
方法
- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
例如,您可以按照以下方式执行操作:
- (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString*)aText {
NSString* newText = [aTextView.text stringByReplacingCharactersInRange:aRange withString:aText];
NSString *trimmedText = [newText stringByReplacingOccurrencesOfString:@" " withString:@""];
if (newText.length - trimmedText.length > wordLimit) {
return NO;
} else {
return YES;
}
}
如果您想要更准确,您还可以首先通过用单个空格替换多个空格并在标点符号后插入空格来“修复”文本。这可能应该写成您在输入文本上调用的单独函数。
答案 1 :(得分:2)
如果您使用的是iOS 4.0或更高版本,则可以使用NSRegularExpression获得更好的效果。我没有试过这个,但是下面的内容应该很接近:
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\w+"
options:0
error:&error];
NSUInteger wordCount = [regex numberOfMatchesInString:string
options:0
range:NSMakeRange(0, [string length])];
答案 2 :(得分:0)
除了计算空格之外,另一个想法是使用5个字符+ 1个空格的平均字长来确定单词的数量。换句话说,将您的总字符数除以6以获得估计的字数。如果你没有100%准确,那就快一点了。