Quando la tastiera era nascosta, la scrollview dovrebbe tornare al suo contenuto contentInset, ma non funziona in iOS7. L'impostazione del contenuto di scrollviewInset quando è stata mostrata la tastiera funziona, ma quando la tastiera era nascosta, contentInsetset dello scrollview non può essere impostato su zero dell'inset. Il codice:iOS7 UIScrollView contentInset not working
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:Nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasHidden:) name:UIKeyboardDidHideNotification object:nil];
}
- (void)keyboardWasShown:(NSNotification *)notif
{
CGSize keyboardSize = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0, 0, keyboardSize.height, 0);
UIScrollView *scrollView = (UIScrollView *)self.view;
scrollView.contentInset = contentInsets;
scrollView.scrollIndicatorInsets = contentInsets;
CGRect rect = self.view.frame;
rect.size.height -= keyboardSize.height;
if (!CGRectContainsPoint(rect, self.wishContentField.frame.origin)) {
CGPoint point = CGPointMake(0, self.wishContentField.frame.origin.y - keyboardSize.height);
[scrollView setContentOffset:point animated:YES];
}
}
- (void)keyboardWasHidden:(NSNotification *)notif
{
UIEdgeInsets zeroInsets = UIEdgeInsetsZero;
UIScrollView *scrollView = (UIScrollView *)self.view;
[scrollView setContentInset:zeroInsets];
scrollView.scrollIndicatorInsets = zeroInsets;
}
Può spiegare come non funziona (come agisce dopo la tastiera nasconde)? Tieni presente che su iOS 7, se disponi di una barra di navigazione traslucida, il tuo controller di visualizzazione imposterà un riquadro in alto alle tue scrollView se non diversamente specificato. Questo potrebbe essere il caso qui, dato che stai impostando 'contentInset.top = 0', quindi potrebbe nascondere alcuni contenuti dietro a' navigationBar' o 'statusBar'. –
Grazie per la risposta. Ho impostato la parte superiore per la navigazione.Bar.frame.size.height e ora funziona. –
Scrivi una risposta e dai un po 'di credito ad alex-i;) –