Gdy klawiatura była ukryta, widok przewijania powinien powrócić do contentInset strony początkowej, ale nie działa w systemie iOS7. Ustawianie zawartości scrollviewInset, gdy wyświetlana jest klawiatura działa, ale gdy klawiatura była ukryta, zawartość contentInset scrollview nie może ustawić się na zero. Kod:iOS7 UIScrollView zawartośćInstalacja nie działa
- (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;
}
Czy możesz wyjaśnić, jak to nie działa (jak to działa po ukryciu klawiatury)? Zauważ, że na iOS 7, jeśli masz przezroczysty 'navigationBar', twój kontroler widoku ustawi wstawkę z góry do swoich scrollViews, jeśli nie zostanie ustawione inaczej. Tak może być w tym przypadku, ponieważ ustawiasz 'contentInset.top = 0', więc może ukryć pewną zawartość za' navigationBar' lub 'statusBar'. –
Dzięki za odpowiedź. Ustawiłem szczyt na navigationBar.frame.size.height i teraz działa. –
Napisz odpowiedź i daj alex-i trochę kredytu;) –