ここで本当に奇妙な問題があります.これは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;
}
}
これ以上のものはありません...
最初にファーストレスポンダーを辞任すると、この問題は発生しませんが、ユーザーがテキストビューを2回タップすることになり、望ましくありません..
また、デッドロックは textview:didEndEditing で発生します (textview がテキストフィールドではなくキーボードを放棄したかのように、textfield:didEndEditing も呼び出されます)。 textview:didEndEditing はどこでも呼び出されません。
それは本当に私の心を揺さぶります...何か提案はありますか?