同時适用于UITextField
1.屬性
//自定義的textview
@property (weak, nonatomic) IBOutlet UITextView *textview;
//添加一個bool類型的屬性
@property (nonatomic, assign) BOOL isNameTextFieldEnbable;
二、監聽通知、并初始化BOOL值
//UITextView的監聽方法
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textchange:) name:UITextViewTextDidChangeNotification object:nil];
//初始化為YES,讓textView開始輸入有反應
self.isNameTextFieldEnbable = YES;
三、監聽方法
/** 監聽方法 */
-(void)textchange:(NSNotification *)note{
//最大字數
static const NSInteger Max_Num_TextView = 5;
//監聽開始預設YES
self.isNameTextFieldEnbable = YES;
//目前輸入語言狀态
UITextInputMode *mode = (UITextInputMode *)[UITextInputMode activeInputModes][0];
NSString *lang = mode.primaryLanguage;
//漢字
if ([lang isEqualToString:@"zh-Hans"]) {
UITextRange *selectedRange = [self.textview markedTextRange];
//高亮狀态的start位置
UITextPosition *position = [self.textview positionFromPosition:selectedRange.start offset:0];
//沒有高亮狀态,即每次截取要在文字确認之後
if (!position) {
if (self.textview.text.length > Max_Num_TextView) {
self.textview.text = [self.textview.text substringToIndex:Max_Num_TextView];
self.isNameTextFieldEnbable = NO;
}
}
}
//非漢字狀态
else{
if (self.textview.text.length > Max_Num_TextView) {
self.textview.text = [self.textview.text substringToIndex:Max_Num_TextView];
self.isNameTextFieldEnbable = NO;
}
}
}
四、TextView的代理方法
//是否允許鍵盤輸入
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
//傳回删除鍵
if ([text isEqualToString:@""]) {
return YES;
}else{
return _isNameTextFieldEnbable;
}
}
五、效果圖