2016-05-12 12 views
0

Ich habe schon seit einiger Zeit mit dieser Tastatur und Scrollview Problem gekämpft. Ich versuche, einen Chat-Room ähnlich wie What'sApp und iMessage zu erstellen. Ich habe UITabBar als Root-View-Controller. Für die Chatroom - Ansicht habe ich eine Werkzeugleiste am unteren Rand, die UITextView und UIButton enthält. Das Problem ist, dass wenn die Tastatur dargestellt wird, die Inhaltsansicht aus dem Bildschirm geschoben wird und ich nicht mehr als 1/5 des oberen Bereichs sehen kann Inhaltsansicht. Ich habe versucht, mit den Zahlen zu spielen und kann immer noch nicht richtig funktionieren. Jede Hilfe würde sehr geschätzt werden.Tastatur schiebt UIScrollView Inhalte aus dem Bildschirm

- (void)keyboardWasShown:(NSNotification *) aNotification { 
    NSDictionary *info = [aNotification userInfo]; 
    CGSize keyboardSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size; 
    // the hardcoded 49 is the height of the UITabBar at the bottom below the input toolbar 
    UIEdgeInsets contentInsets = UIEdgeInsetsMake((-keyboardSize.height+49), 0.0, (keyboardSize.height-49), 0.0); 
    self.scrollView.contentInset = contentInsets; 
    self.scrollView.scrollIndicatorInsets = contentInsets; 

// If active text field is hidden by keyboard, scroll it so it's visible 
// Your app might not need or want this behavior. 
// CGRect aaRect = self.view.frame; 
// aaRect.size.height -= keyboardSize.height; 
// if (!CGRectContainsPoint(aaRect, self.activeTextView.frame.origin)) { 
//  [self.scrollView scrollRectToVisible:self.activeTextView.frame animated:NO]; 
// } 

    CGPoint scrollPoint = CGPointMake(0, self.scrollView.contentInset.bottom); 
    [self.scrollView setContentOffset:scrollPoint animated:true]; 


    [self.view addGestureRecognizer:self.tapRecognizer]; 

} 


- (void)keyboardWillBeHidden:(NSNotification *) aNotification { 
    UIEdgeInsets contentInsets = UIEdgeInsetsZero; 
    self.scrollView.contentInset = contentInsets; 
    self.scrollView.scrollIndicatorInsets = contentInsets; 

    [self.view removeGestureRecognizer:self.tapRecognizer]; 
} 

Antwort

1

Ich traf das gleiche Problem vor langer Zeit. Meine Lösung ist zu hören Tastaturrahmen hat Benachrichtigung geändert (weil verschiedene Tastatur hat unterschiedliche Rahmen). Und ich denke, dass es einfacher ist, den Rahmen der Bildlaufansicht als den Inhaltsoffset anzupassen.

Verwandte Themen