将Word限制应用于UITextView

如何在objective-c / interface builder中将字数限制应用于UITextView。

我一直在寻找并找到字符数,但没有字数…

任何人都给我任何指针……

您可以只计算空格数并限制它。 这是一个黑客,但它的工作原理。

你可以在里面做到这一点

- (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; } } 

如果您想要更准确,您还可以通过用单个空格替换多个空格并在标点符号后插入空格来“修复”文本。 这可能应该写成您在输入文本上调用的单独函数。

如果您使用的是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])]; 

除了计算空间之外,另一个想法是使用5个字符+ 1个空格的平均字长来确定单词的数量。 换句话说,将您的总字符数除以6以获得估计的字数。 如果你没有100%准确,那就快一点了。