2

ここで本当に奇妙な問題があります.これは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 はどこでも呼び出されません。

それは本当に私の心を揺さぶります...何か提案はありますか?

4

2 に答える 2

0

わかりました、何が問題なのかわかりました

DaKeyboardControl を使用して、キーボードが表示されたときにビューを調整しています...奇妙なのは、ファーストレスポンダーを変更するときに iOS 7 でこれが壊れているように見えることです (テキストビュー/テキストフィールドが 1 つしかない場合、デッドロックにはなりません)。どの行がこのエラーを生成しているかを把握しながら、バグレポートを githubs に開いています...エラーが発生したら、EDIT で共有します

編集: 問題は UIKeyboardWillShowNotification レシーバーにあります...この通知は複数回呼び出されます...解決策は、UIKeyboardDidChangeFrameNotification または UIKeyboardWillChangeFrameNotification を使用してフレームの変更を実行することです...

これが誰かの助けになることを願っています... UIKeyboardWillShowNotification を使用すると、現在 iOS 7 を使用していない人に問題が発生するかどうかわかりません

于 2013-09-21T19:39:46.077 に答える