UITextView in einer UITableViewCell zeigt und versteckt die Tastatur auf dem iPad, funktioniert aber auf dem iPhone

Ich habe eine benutzerdefinierte UITableViewCell implementiert, die eine UITextView enthält, deren Größe sich automatisch an die Benutzertypen anpasst, ähnlich wie im Feld "Notizen" in der Kontakte-App. Auf meinem iPhone funktioniert es einwandfrei, aber wenn ich es auf dem iPad teste, tritt ein merkwürdiges Verhalten auf: Wenn Sie das Ende einer Zeile erreichen, wird die Tastatur für eine Millisekunde ausgeblendet und zeigt sich dann sofort wieder. Ich würde es nur als einen eigenartigen Fehler abschreiben, aber es verursacht tatsächlich Datenverlust, da beim Tippen ein oder zwei Zeichen verloren gehen. Hier ist mein Code:

Der Cod
// returns the proper height/size for the UITextView based on the string it contains.
// If no string, it assumes a space so that it will always have one line.
- (CGSize)textViewSize:(UITextView*)textView {
     float fudgeFactor = 16.0;
     CGSize tallerSize = CGSizeMake(textView.frame.size.width-fudgeFactor, kMaxFieldHeight);
     NSString *testString = @" ";
     if ([textView.text length] > 0) {
          testString = textView.text;
     }
     CGSize stringSize = [testString sizeWithFont:textView.font constrainedToSize:tallerSize lineBreakMode:UILineBreakModeWordWrap];
     return stringSize;
}

// based on the proper text view size, sets the UITextView's frame
- (void) setTextViewSize:(UITextView*)textView {
     CGSize stringSize = [self textViewSize:textView];
     if (stringSize.height != textView.frame.size.height) {
          [textView setFrame:CGRectMake(textView.frame.origin.x,
                                        textView.frame.origin.y,
                                        textView.frame.size.width,
                                        stringSize.height+10)];  // +10 to allow for the space above the text itself 
     }
}

// as per: https://stackoverflow.com/questions/3749746/uitextview-in-a-uitableviewcell-smooth-auto-resize
- (void)textViewDidChange:(UITextView *)textView {

     [self setTextViewSize:textView]; // set proper text view size
     UIView *contentView = textView.superview;
     // (1) the padding above and below the UITextView should each be 6px, so UITextView's
     // height + 12 should equal the height of the UITableViewCell
     // (2) if they are not equal, then update the height of the UITableViewCell
     if ((textView.frame.size.height + 12.0f) != contentView.frame.size.height) {
         [myTableView beginUpdates];
         [myTableView endUpdates];

         [contentView setFrame:CGRectMake(0,
                                          0,
                                          contentView.frame.size.width,
                                          (textView.frame.size.height+12.0f))];
     }
}

- (CGFloat)tableView:(UITableView  *)tableView heightForRowAtIndexPath:(NSIndexPath  *)indexPath {
     int height;
     UITextView *textView = myTextView;
     [self setTextViewSize:textView];
     height = textView.frame.size.height + 12;
     if (height < 44) { // minimum height of 44
          height = 44;
          [textView setFrame:CGRectMake(textView.frame.origin.x,
                                        textView.frame.origin.y,
                                        textView.frame.size.width,
                                        44-12)];
      }
      return (CGFloat)height;
}
Die Problem

Also, hier ist was passiert

Dieser Code funktioniert auf meinem iPhone und im iPhone-Simulator zu 100% einwandfrei. Während ich den Text eingebe, wächst die UITextView reibungslos und die UITableViewCell mit.Auf dem iPad-Simulator wird es jedoch nervig. Es funktioniert einwandfrei, wenn Sie in der ersten Zeile tippen. Wenn Sie jedoch am Ende einer Zeile angelangt sind, wird die Tastatur ausgeblendet und sofort wieder angezeigt. Wenn der Benutzer die Eingabe fortsetzt, fehlen in der App ein oder zwei Zeichen.Hier sind einige zusätzliche Hinweise zu den seltsamen Verhaltensweisen, die mir aufgefallen sind und die vielleicht helfen, es zu erklären:Auch habe ich festgestellt, dass das Entfernen der Linien[myTableView beginUpdates]; [myTableView endUpdates]; in der FunktiontextViewDidChange:(UITextView *)textView lässt die UITextView richtig wachsen und die Tastatur auch nicht ein- und ausblenden, aber leider wächst die UITableViewCell dann nicht auf die richtige Höhe.AKTUALISIEREN Folgenddiese Anleitung, Ich kann jetzt die seltsame Bewegung des Textes stoppen; aber die tastatur ist immer noch versteckt und zeigt, was sehr seltsam ist.

Hat jemand eine Idee, wie die Tastatur kontinuierlich angezeigt werden kann, anstatt sie zu verbergen und anzuzeigen, wenn Sie auf dem iPad am Ende der Zeile angelangt sind?

P.S .: Ich bin nicht an der Verwendung von ThreeTwenty interessiert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage