iOS-Schnelltipp: Anpassen der Ansicht für die Texteingabe in einer UITableView

Der Zweck dieses Tutorials

Nun, in iOS gibt es beim Hinzufügen einer benutzerdefinierten Tabellenansichtszelle zu einer UITableView mit einem UITextField darin keine automatische Anpassung zum Verschieben der Tabellenansicht, sodass Sie beim Eingeben von Text immer sehen, was los ist. Stattdessen wird Ihr Text von der Tastatur verdeckt und Frust entsteht!

Dieses Tutorial soll diese Frustration vermeiden!

Sie haben also einen Table View Controller

Es ist eigentlich ziemlich einfach, dies zu tun, es ist nur vielen nicht bekannt … Sie müssen über das NSNotificationCenter über Tastaturbenachrichtigungen benachrichtigt werden. Dies geschieht wie folgt:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

Dieser Code befindet sich in der viewDidLoad-Methode und benachrichtigt diesen Ansichtscontroller über die Benachrichtigungen, über die wir informiert werden möchten, und leitet diese Benachrichtigungen um keyboardWillShow Methode und keyboardWillHide Methode.

TastaturWillShow:

- (void)keyboardWillShow:(NSNotification *)notification
   {
       CGSize keyboardSize = [notification.userInfo[UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
       NSNumber *rate = notification.userInfo[UIKeyboardAnimationDurationUserInfoKey];
 
       UIEdgeInsets contentInsets;
       if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) {
            contentInsets = UIEdgeInsetsMake(0.0, 0.0, (keyboardSize.height), 0.0);
    } else {
        contentInsets = UIEdgeInsetsMake(0.0, 0.0, (keyboardSize.width), 0.0);
        }
 
    [UIView animateWithDuration:rate.floatValue animations:^{
     self.myTableView.contentInset = contentInsets;
     self.myTableView.scrollIndicatorInsets = contentInsets;
     }];
    [self.myTableView scrollToRowAtIndexPath:self.editingIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
    }

TastaturWillHide:

- (void)keyboardWillHide:(NSNotification *)notification
{
    NSNumber *rate = notification.userInfo[UIKeyboardAnimationDurationUserInfoKey];
    [UIView animateWithDuration:rate.floatValue animations:^{
    	self.myTableView.contentInset = UIEdgeInsetsZero;
    	self.myTableView.scrollIndicatorInsets = UIEdgeInsetsZero;
    }];
}

Was brauche ich noch?

Nun, Sie müssen sicherstellen, dass die Benachrichtigungsbeobachtung endet, wenn dieser View-Controller den Gültigkeitsbereich verlässt, also müssen wir dealloc implementieren.

Verständnis

- (void)dealloc {
  [[NSNotificationCenter defaultCenter] removeObserver:self];
}

Und das ist es!

Sie haben den Cursor erfolgreich rechts über die Tastatur bewegt!

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *