在对textView、textField限制文字长度时,如果不做特殊处理,当联想文字加上已输入文字超出设定长度时,iOS 7.0系统会崩溃(iOS 8.0以上系统做了处理,不会崩溃)。
解决方法:在限制长度时加一个判断,textView.markedTextRange == nil,表示没有在联想输入状态时。
#pragma mark - textViewDelegate
- (void)textViewDidChange:(UITextView *)textView
{
if (textView.text.length > 140 && textView.markedTextRange == nil) {
textView.text = [textView.text substringToIndex:140];
}
}
#pragma mark - UITextFieldDelegate
- (void)textFieldEditingChanged:(UITextField *)textField
{
if (textField.text.length > kMaxLength && textField.markedTextRange == nil) {
textField.text = [textField.text substringToIndex:kMaxLength];
}
}