美文网首页
UITextField 、UITextView控制字符和汉字的

UITextField 、UITextView控制字符和汉字的

作者: 大虾咪 | 来源:发表于2016-10-13 23:23 被阅读61次

    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

    相关文章

      网友评论

          本文标题:UITextField 、UITextView控制字符和汉字的

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