Jestem w trakcie przewijania UIScrollView w górę, jeśli klawiatura ukryje UITextField. Zmniejszam wysokość UIScrollView, jeśli będzie ona zakryta, co działa dobrze. ale kiedy próbuję zwiększyć wysokość UIScrollView (z powrotem do oryginalnego rozmiaru), cały UIScrollView przesuwa się w górę, a następnie animuje do pierwotnego rozmiaru i lokalizacji. pochodzenie przesuwa się w górę o X i przesuwa się w dół do miejsca, w którym powinno być, zamiast do powiększania widoku.zmiana rozmiaru UIScrollView z blokiem Animacja przesuwa pochodzenie
- (void)keyboardWillShow:(NSNotification *)n
{
keyboardMove = self.rightScrollView.frame;
offsetMove = self.rightScrollView.contentOffset;
NSDictionary* userInfo = [n userInfo];
CGSize keyboardSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
[UIView animateWithDuration:.25
delay:0
options:(UIViewAnimationOptionAllowUserInteraction)
animations:^
{
self.rightScrollView.frame = CGRectMake(self.rightScrollView.frame.origin.x, self.rightScrollView.frame.origin.y, self.rightScrollView.frame.size.width, (self.view.frame.size.height - (self.rightScrollView.frame.origin.y + keyboardSize.height)));
}
completion:nil];
if ((activeTextField.frame.origin.y + activeTextField.frame.size.height) > self.rightScrollView.frame.size.height)
{
float contentOffsetMove = (self.rightScrollView.contentOffset.y + (activeTextField.frame.origin.y - self.rightScrollView.frame.size.height) + activeTextField.frame.size.height + 10);
self.rightScrollView.contentOffset = CGPointMake(self.rightScrollView.contentOffset.x, contentOffsetMove);
}
}
- (void)keyboardWillHide:(NSNotification *)n
{
if ((activeTextField.frame.origin.y + activeTextField.frame.size.height) > self.rightScrollView.frame.size.height)
{
[UIView animateWithDuration:.25
delay:0
options:(UIViewAnimationOptionAllowUserInteraction)
animations:^{
[self.rightScrollView setContentOffset:offsetMove animated:YES];
self.rightScrollView.frame = keyboardMove;
}
completion:nil];
}
else
{
[UIView animateWithDuration:.25
delay:0
options:(UIViewAnimationOptionAllowUserInteraction)
animations:^{
self.rightScrollView.frame = keyboardMove;
}
completion:nil];
}
}
więc, gdy klawiatura ukrywa, self.rightScrollView.origin porusza się punkty X, a następnie animuje się lokalizacja jest powinno być. potrzebuję, by pochodzenie pozostało na miejscu, a wysokość stała się większa (rośnie w dół).
żadnych pomysłów, dlaczego jej zachowanie jest głupie?
nie uda Ci się rozwiązać ten problem? Mam dokładnie ten sam problem i nie mogę znaleźć dla niego rozwiązania? – pnizzle