iOS中对文本输入的监听处理

iOS中对文本输入的监听处理,第1张

实际开发当中很多要用到对UItextfield或者UItextfield输入监听,限制字数及其他一些处理,但是由于中文输入法的键盘上有联想、推荐的功能,所以使用这两个控件的代理方法可能导致文本内容长度上有些不符合预期,导致越界使处理条件出错,所以可以考虑使用以下方法来实现文本控制条件:

1.首先需要注册通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onTextViewEditChanged:) name:@"UITextViewTextDidChangeNotification" object:nil]

2.实现监听方法:

// 监听字符变化,并处理

- (void)onTextViewEditChanged:(NSNotification *)obj

{

UITextView *textView = (UITextView *)obj.object

self.placeholderLab.hidden = textView.hasText

if (ReportTextViewMaxLength >0)

{

NSString *toBeString = textView.text

//获取当前高亮

UITextRange *selectedRange = [textView markedTextRange]

UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0]

// 如果没有高亮选择,则对已经输入的文字进行字数统计、限制

if (!position)

{

if (toBeString.length >ReportTextViewMaxLength)

{

[textView shake]

[MBProgressHUD show:@"举报内容最多为60字!" icon:nil view:[UIApplication sharedApplication].keyWindow hideAfterDelay:1.0]

NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:ReportTextViewMaxLength]

if (rangeIndex.length == 1)

{

textView.text = [toBeString substringToIndex:ReportTextViewMaxLength]

}

else

{

NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, ReportTextViewMaxLength)]

textView.text = [toBeString substringWithRange:rangeRange]

}

}

}

}

//这里可以实现其他需要的处理。

}

}

3.最后不要忘了在页面销毁的时候移除通知:

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UITextViewTextDidChangeNotification" object:nil]

TextView是用来显示文字的,ImageView是用来显示图片的。

默认情况下,两个获得焦点时是没有背景色的。要实现获得焦点时候有背景颜色,可以添加监听,实现自己需要的背景效果 textview.setOnTouchListener(new View.OnTouchListener(){ public boolean onTouch(View view, MotionEvent motionEvent) { //自己的背景效果 return false} })如textview.setBackgroundResource(R.drawable.aaa)//aaa为自己的背景图片或xml文件


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11920737.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存