1.首先定义一个属性变量
///字数限制
@property(nonatomic,assign)NSInteger countLimit;
///输入框
@property(nonatomic,strong)UITextField *tf;
2.在初始化监听UITextField的输入变化通知。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFiledEditChanged:)
name:@"UITextFieldTextDidChangeNotification"
object:self.tf];
3.接收通知的时候,对系统键盘联想输入,高亮选中的字体进行字数限制。
- (void)textFiledEditChanged:(NSNotification *)aNotifi
{
if (aNotifi.object == self.tf) {
UITextField *textField = self.tf;
UITextRange *selectedRange = [textField markedTextRange];
NSString *newText = [textField textInRange:selectedRange];
if (!newText.length) {
if (self.tf.text.length > self.countLimit) {
self.tf.text = [self.tf.text substringToIndex:self.countLimit];
}
//下面代码是字数显示,显示格式如:5/20;
_lbCount1.text = @""[@(self.tf.text.length)][@"/"][@""[@(self.countLimit)]];
}
}
}
4.遵守UITextField的代理方法
#pragma mark - UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField == _tf) {
//限制
if ([string isEqualToString:@" "]) {
return NO;
}
//最多输入位数限制
if (self.countLimit) {
UITextRange *selectedRange = [textField markedTextRange];
NSString *selectedText = [textField textInRange:selectedRange];
NSInteger count = textField.text.length;
if (selectedText.length) {
count = textField.text.length - selectedText.length;
}
if (count >= self.countLimit && ![string isEqualToString:@""]) {
return NO;
}
}
}
return YES;
}
点赞的你,真帅。