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的内容。