UITextFiled & UITextView 控制输入长度、中文处理以及UITextView 的placeHolder 的一种实现方法

1.为控件添加监听事件

TextView可以添加的监听事件

UIKIT_EXTERN NSString *const UITextViewTextDidBeginEditingNotification;

UIKIT_EXTERN NSString *const UITextViewTextDidChangeNotification;

UIKIT_EXTERNNSString * const UITextViewTextDidEndEditingNotification;

TextField可以添加的监听事件

UIKIT_EXTERN NSString *const UITextFieldTextDidBeginEditingNotification;

UIKIT_EXTERN NSString *const UITextFieldTextDidEndEditingNotification;

UIKIT_EXTERNNSString *const UITextFieldTextDidChangeNotification;

<strong>[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(<span style="color:#ff0000;">监听方法:</span>) name:<span style="color:#ff0000;">监听事件名</span> object:<span style="color:#ff0000;">控件</span>];   主要是用上面两个蓝色背景的事件</strong>

<strong>[[NSNotificationCenter defaultCenter] removeObserver:self name:<span style="color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif;">监听事件名  </span>object:<span style="font-family: Arial, Helvetica, sans-serif;"><span style="color:#ff0000;">控件</span></span><span style="font-family: Arial, Helvetica, sans-serif;">];     在dealloc里调用,从通知中心去除。 ARC下可以在viewdiddisapear里调用。</span></strong>


2.实现监听方法


#define     kADVISE_MAXLENGTH     16    //最大输入长度


//可以在适当的地方加入你的逻辑处理

-(void)监听方法:(NSNotification *)obj{
    UITextView *textView = (UITextView *)obj.object;
    NSString *toBeString = textView.text;
    
    if ([toBeString isEqualToString:@"\n"]) { <span style="color: rgb(51, 204, 0); font-family: Arial, Helvetica, sans-serif;"><strong>// 是否按下了键盘上的return 按钮 ,这里用于监听UITextView的Return事件</strong></span>
        if (textView.text.length == 0) {
            <span style="font-weight: bold; color: rgb(51, 204, 0); font-family: Arial, Helvetica, sans-serif;">// 关闭键盘时如果内容为空 所做的处理</span>
        }else{
           <span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style=" color: rgb(51, 204, 0); font-family: Arial, Helvetica, sans-serif;"><strong>// 关闭键盘时如果内容不为空 所做的处理</strong></span>
        }
        [textView resignFirstResponder];
    }else{
        NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; <span style="color:#33cc00;"><strong>// 键盘输入模式</strong></span>
        if ([lang isEqualToString:@"zh-Hans"]) { <span style="color: rgb(51, 204, 0); font-family: Arial, Helvetica, sans-serif;"><strong>// 简体中文输入,包括简体拼音,健体五笔,简体手写</strong></span>
            UITextRange *selectedRange = [textView markedTextRange];
           <span style="color:#33cc00;"> <strong>//获取高亮部分</strong></span>
            UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0];
            <span style="color:#33cc00;"><strong>// 没有高亮选择的字,则对已输入的文字进行字数统计和限制</strong></span>
            if (!position) {
                if (toBeString.length > kADVISE_MAXLENGTH) {
                    textView.text = [toBeString substringToIndex:kADVISE_MAXLENGTH];
                }
            }
            <strong style="background-color: rgb(255, 255, 255);"><span style="color:#33cc00;">// 有高亮选择的字符串,则暂不对文字进行统计和限制</span></strong>
            else{
                
            }
        }
        <strong><span style="color:#009900;">// 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况</span></strong>
        else{
            if (toBeString.length > kADVISE_MAXLENGTH) {
                textView.text = [toBeString substringToIndex:kADVISE_MAXLENGTH];
            }
        }
    }
}




3.UITextView添加 PlaceHolder的一种实现方法

3.1    添加一个与textView一样大小的背景View

        3.2    在背景View里适当的位置添加一个UIlable  背景透明,

        3.3    最后将textView添加到背景View里,textView背景透明

        3.4   UILable的内容就是placeHolder的内容,添加监听方法或实现代理  通过这些方法改变Label的内容。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值