方法一:
UITextField
和其他控件一样,具有addTarget
的方法。那么我们直接把他限制字数放在事件里面就好。
[textField addTarget:self action:@selector(limitString:) forControlEvents:UIControlEventEditingChanged];
/**
限制字数输入
@param textField 输入框
*/
-(void)limitString:(UITextField *)textField
{
UITextField *myTextField = (UITextField *)textField;
NSString *toBeString = myTextField.text;
//获取高亮部分
UITextRange *selectedRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
if (!position)
{
if (toBeString.length > MAX_STARWORDS_LENGTH)
{
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];
if (rangeIndex.length == 1)
{
textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];
}
else
{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange];
}
}
}
}
方法二:
使用通知,通知事件里面再判断字数。其实和addTarget
事件差不多,只是机制不一样而已。