最近公司让写的项目里有个“意见反馈”,要求只能写300个字,而且下面需要显示输入字数,刚开始觉得挺简单,做出来之后发现,汉字和字母代表的字数还不一样,于是网上搜了搜发现需要对输入的内容进行输入格式判断:
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextView *myTextView;
@property (weak, nonatomic) IBOutlet UILabel *label;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//监听
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(changedAction:) name:UITextViewTextDidChangeNotification object:self.myTextView];
}
- (void)changedAction:(NSNotification *)obj
{
NSString *toBeString = self.myTextView.text;
//获取键盘输入模式
NSString *lang = self.textInputMode.primaryLanguage;
//判断
if ([lang isEqualToString:@"zh-Hans"]) {
UITextRange *selectedRange = [self.myTextView markedTextRange];//获取高亮部分
if (!selectedRange){
if (toBeString.length > 10) {
self.myTextView.text = [toBeString substringToIndex:300];
}
}else{
}
}else{
if (toBeString.length > 10) {
self.myTextView.text = [toBeString substringToIndex:300];
}
}
NSInteger count = [toBeString length];
if (toBeString.length > 10) {
count = 10;
}
self.label.text = [NSString stringWithFormat:@"%zd/10",count];
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter]removeObserver:self name:UITextViewTextDidChangeNotification object:self.myTextView];
}