sto facendo scorrere un UIScrollView su se la tastiera nasconderà un UITextField. Riduco l'altezza di UIScrollView se verrà coperto e funziona correttamente. ma quando provo a far crescere l'altezza di UIScrollView (di nuovo alla dimensione originale), l'intero UIScrollView si sposta verso l'alto e quindi si anima fino alla dimensione e alla posizione originale. l'origine si sposta di X e si sposta verso il basso dove dovrebbe essere invece dell'altezza della vista che si espande verso il basso.ridimensionamento di un UIScrollView con il blocco di animazioni si sposta origine
- (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];
}
}
così, quando la tastiera nasconde, self.rightScrollView.origin sposta i punti X e poi alla anima la posizione è dovrebbe essere. ho bisogno che l'origine rimanga e l'altezza diventi di più (cresce verso il basso).
qualche idea sul perché si comporta in modo stupido?
siete riusciti a risolvere questo problema? Ho esattamente lo stesso problema e non riesco a trovare una soluzione per questo? – pnizzle