2016-10-26 8 views
0

Ich arbeite an einer iPhone-App mit Auto-Layout, die ein oberes und ein unteres Feld am unteren Rand einer Ansicht hat. Der Benutzer tippt auf ein Feld und ich muss die Ansicht über die Tastatur scrollen. Hier ist mein KeyboardDidShow-Code.Automatisches Scrollen für Tastatur?

- (void) keyboardDidShow:(NSNotification *)notification 
{ 
    CGSize kbSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0); 
    [[self scrollView] setContentInset:contentInsets]; 

    [self setIsKeyboardVisible:YES]; 
} 

sollte nicht nur diese Arbeit nicht (ich die eigentliche Scroll-Befehl aus links), aber wenn ich das obere Feld der Ansicht scrollt nach oben tippen, bis der Boden des Feldes befindet sich am oberen Rand der Tastatur. Wenn ich auf der Tastatur auf Weiter tippe, um den Cursor zum unteren Feld zu bewegen, scrollt die Ansicht ein wenig weiter nach oben, bis das untere Feld oben auf der Tastatur erscheint.

Hier ist, wie ich die Return-Taste Griff:

- (BOOL) textFieldShouldReturn:(UITextField*)textField 
{ 
    switch ([textField tag]) 
    { 
     case vtNameField: 
      [[self txtEmail] becomeFirstResponder]; 

      break; 

     case vtEmailField: 
      [[self txtEmail] resignFirstResponder]; 

      break; 

     default: 
      break; 
    } 

    return NO; 
} 

Weiß jemand, was das Scrollen verursacht? Ich sehe dieses Verhalten in anderen Apps und dachte, es müsste handcodiert werden. Ich sehe das nur in einer meiner Ansichten und ich frage mich, ob es etwas ist, das ich konfiguriert habe.

Antwort

0

Verwenden Sie diese Bibliothek, es ist super einfach und keine Notwendigkeit für Code. Geben Sie einfach den Klassennamen der Ansicht als "TPKeyboardAvoidingScrollView" ein, und die Ansicht scrollt automatisch, um das TextField über der Tastatur zu positionieren.

https://github.com/michaeltyson/TPKeyboardAvoiding

Verwandte Themen