美文网首页iOS Developer
UITextView控制字符和汉字的个数

UITextView控制字符和汉字的个数

作者: 年少追梦 | 来源:发表于2017-06-05 21:45 被阅读14次

    UITextView和UITextField类似

    UITextViewDelegate方法

    #import "ViewController.h"@interface ViewController ()@end@implementation ViewController{    UITextField *textField1;}- (void)viewDidLoad {    [super viewDidLoad];    textField1 = [[UITextField alloc] init];    textField1.delegate = self;    //添加方法    [textField1 addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];    textField1.frame = CGRectMake(10, 80, 200, 60);    textField1.backgroundColor = [UIColor grayColor];    [self.view addSubview:textField1];}- (void)touchesBegan:(NSSet*)touches withEvent:(UIEvent *)event{

    [textField1 resignFirstResponder];

    //    [self.view endEditing:YES];

    }

    static BOOL isWarned = YES;

    - (void)textFieldDidChange:(UITextField *)tf

    {

    // 该判断用于联想输入    6个字符  3个汉字

    [self limitCharater:tf limit:6];

    }

    //限制联想输入的字数

    - (void)limitCharater:(UITextField *)tf limit:(int )count{

    if ([self characterCount:tf] > count) {

    while ([self characterCountWithString:tf.text] > count && tf.markedTextRange== nil) {

    tf.text = [tf.text substringToIndex:tf.text.length - 1];

    }

    if (isWarned && tf.markedTextRange == nil) {

    isWarned = NO;

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

    isWarned = YES;

    });

    }

    }

    }

    /**

    *  计算字符个数(一个汉字等于两个字符)

    */

    - (NSInteger)characterCountWithString:(NSString *)string

    {

    NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

    NSData* data = [string dataUsingEncoding:enc];

    return data.length;

    }

    /**

    *  计算字符个数(一个汉字等于两个字符)

    */

    - (NSInteger)characterCount:(UITextField *)tf

    {

    NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);

    NSData* data = [tf.text dataUsingEncoding:enc];

    return data.length;

    }

    @end

    相关文章

      网友评论

        本文标题:UITextView控制字符和汉字的个数

        本文链接:https://www.haomeiwen.com/subject/dluwfxtx.html