//初始化UITextField对象
_inputTextFiled = [[UITextField alloc] initWithFrame:CGRectMake(0, 160, 320, 40)];
_inputTextFiled.delegate = self;
_inputTextFiled.borderStyle = UITextBorderStyleLine;
// [_inputTextFiled addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; //也可以使用这个监听
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:nil];
//修改placeHold颜色
_inputTextFiled.attributedPlaceholder = [[NSMutableAttributedString alloc] initWithString:@"placleHold" attributes:@{NSForegroundColorAttributeName: [UIColor redColor]}];
_inputTextFiled.clearButtonMode = UITextFieldViewModeWhileEditing;
[self.view addSubview:_inputTextFiled];
#pragma mark-UITextFiledDelegate
//监听限制是否允许继续输入
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField == _inputTextFiled) {
if (string.length == 0) return YES;
//range是当前要被替换输入的区域 string是当前要被替换输入区域的文本
NSInteger allTextLenth = textField.text.length; //所有文本长度
NSInteger selectedLength = range.length; //要输入区域包括联想出来的长度
NSInteger replaceLength = string.length; //输入的长度
if (allTextLenth - selectedLength + replaceLength > 20) { //这里是控制联想出来的超过就不让输入
return NO;
}
}
return YES;
}
//监听输入有变化
- (void)textFieldDidChange:(UITextField *)textField
{
if (textField == _inputTextFiled) {
if (textField.text.length > 20) {
textField.text = [textField.text substringToIndex:20];
}
}
}
//初始化UITextView
_inputTextView = [[UITextView alloc] initWithFrame:CGRectMake(0, 160, 320, 30)];
_inputTextView.delegate = self;
_inputTextView.backgroundColor = [UIColor purpleColor];
[self.view addSubview:_inputTextView];
#pragma mark-UITextViewDelegate
//是否发生变化
- (void)textViewDidChange:(UITextView *)textView
{
if (textView.markedTextRange == nil && _inputTextView.text.length > 10) {
textView.text = [textView.text substringToIndex:10];
}
}
//是否允许输入
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if (textView == _inputTextView) {
if (textView.text.length >= 10 && text.length > range.length) {
return NO;
}
}
return YES;
}
参考: 点击打开链接