这里有一个非常奇怪的问题,这在 iOS 7 之前没有发生过......
我在我创建的表单中有一个 uitextfield 和 uitextview ...问题是如果用户将文本字段作为第一响应者然后点击 uitextview 发生死锁,内存将增加,直到看门狗杀死我的应用程序..
当我从 uitextview 更改为 uitextfield 时,不会发生这种情况
相关代码:
#pragma mark - UITextView Delegate
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
}
NSUInteger newLength = [textView.text length] + [text length] - range.length;
return (newLength > 120) ? NO : YES;
}
-(void)textViewDidEndEditing:(UITextView *)textView {
if (textView.tag == CreatePlaceElementDescription) {
self.marker.info = textView.text;
}
else if (textView.tag == CreatePlaceElementAddress) {
self.marker.address = textView.text;
}
}
#pragma mark - UITextField Delegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([string isEqualToString:@"\n"]) {
[textField resignFirstResponder];
}
NSUInteger newLength = [textField.text length] + [string length] - range.length;
//Limit name textfield length
return (newLength > 60) ? NO : YES;
}
-(void)textFieldDidEndEditing:(UITextField *)textField {
if (textField.tag == CreatePlaceElementName) {
self.marker.name = textField.text;
}
}
没有什么比这更...
如果我先辞去第一响应者,这个问题不会发生,但它会让用户点击 textview 两次,这是不希望的..
死锁也发生在 textview:didEndEditing 上,(好像 textview 是放弃键盘而不是 textfield 的那个,也调用了 textfield:didEndEditing).. textview:didEndEditing 不应在任何地方调用
这真的让我大吃一惊……有什么建议吗?