Ios 第二个scrollview移动动画故障

Ios 第二个scrollview移动动画故障,ios,scrollview,uiviewanimation,Ios,Scrollview,Uiviewanimation,出于审美/娱乐目的,为了在比屏幕更大的背景图像上平移而不是推送第二个视图,我尝试将两个视图的功能结合起来,一个是根视图,另一个是推送视图 因此,根视图有一个按钮,点击该按钮时,启动向右平移滚动视图,而不是按下第二个视图。这很好: - (IBAction)nextButton:(id)sender { [UIView animateWithDuration:2.0 animations:^{ _scrollViewToPan.contentOffset = CGPointMake(645,

出于审美/娱乐目的,为了在比屏幕更大的背景图像上平移而不是推送第二个视图,我尝试将两个视图的功能结合起来,一个是根视图,另一个是推送视图

因此,根视图有一个按钮,点击该按钮时,启动向右平移滚动视图,而不是按下第二个视图。这很好:

- (IBAction)nextButton:(id)sender {
[UIView animateWithDuration:2.0 animations:^{
    _scrollViewToPan.contentOffset = CGPointMake(645, 0.0);
}];
}

现在出现在第二个视图屏幕上的内容涉及用户输入一些信息。在我尝试将其合并到一个视图之前,所有这些都作为第二个推送视图工作。现在它们结合在一起,滚动视图动画在移动以适应键盘中的键盘时出现了一个小故障。如图所示:(见下文)-在滚动到键盘上方的位置之前,它会跳转到原始坐标

    NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

UIEdgeInsets contentInsets = UIEdgeInsetsMake(645, 0.0, kbSize.height, 0.0);
_scrollViewToPan.contentInset = contentInsets;
_scrollViewToPan.scrollIndicatorInsets = contentInsets;
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;
if (activeField == _nameTextView){
    CGPoint scrollPoint = CGPointMake (645, 160);
    [_scrollViewToPan setContentOffset:scrollPoint animated:YES];
}

if (activeField == _addressTextView){
    CGPoint scrollPoint = CGPointMake (645, 160);
    [_scrollViewToPan setContentOffset:scrollPoint animated:YES];
}
键盘将隐藏:

[UIView animateWithDuration:0.3 animations:^{
    _scrollViewToPan.contentOffset = CGPointMake(645, 0.0);
}];
当这是一个单独的视图时,scrollPoint是(0160),并且一切都很好。我将其更改为(645160)以与上述平移的第一个偏移对齐。但是,当用户点击textView时,它不会与键盘外观一起平滑地向上滚动,而是跳转到原始的预平移坐标,然后向上向右滚动,这样它最终会在正确的位置结束

简而言之,我想要的是原始坐标a-->(点击按钮)-->滚动到坐标B-->点击文本视图/键盘显示-->滚动到坐标C-->键盘-->滚动到坐标B

我得到的是原始坐标A-->(点击按钮)-->滚动到坐标B-->点击文本视图/键盘显示-->(跳到A然后滚动到C)-->键盘-->滚动到坐标B


我如何才能摆脱“跳转到A”的小故障?

在混音中添加内容插入时,动画线在某处交叉。我将scrollView的IB设置变大了,这样就可以考虑键盘的高度,而不是在键盘上动态添加。然后,简化键盘显示为:

    if (activeField == _nameTextView){
    [UIView animateWithDuration:0.3 animations:^{
        _scrollViewToPan.contentOffset = CGPointMake(645, 140);
    }];
}
if (activeField == _addressTextView){

    [UIView animateWithDuration:0.3 animations:^{
        _scrollViewToPan.contentOffset = CGPointMake(645, 205);
    }];

在用户第一次和后续选择时,仅垂直滚动可正确设置动画,以适应键盘。

通过跳到A,然后滚动到C,这是否意味着从A到C的转换意味着它是对角滚动的?我想代码中修改滚动视图的内容可能会产生副作用。我将尝试通过在
-[UIScrollView setContentOffset::
上创建一个条件断点来调试它,然后在点击文本视图之前将其打开,并通过运行堆栈找出代码的哪一部分导致该问题。问题似乎是setContentOffset:setContentOffset:animated:定义中固有的:设置与接收器原点对应的内容视图原点的偏移量。因此,它将从公布的原点重新启动。然而,当键盘消失时,它不会这样做,这似乎是不一致的行为。不幸的是,我不了解断点和堆栈运行的神秘方式。。。但是,它只在第一次选择textView时跳转。如果重新选择,它只会正确地向上滚动以适应键盘,而不会跳回原点故障。