UIScrollView setContentOffset:动画:奇怪的行为

Posted

技术标签:

【中文标题】UIScrollView setContentOffset:动画:奇怪的行为【英文标题】:UIScrollView setContentOffset:animated: weird behaviour 【发布时间】:2012-08-11 04:43:43 【问题描述】:

我正在使用包含几个文本字段的滚动视图。当文本字段“开始编辑”时,我执行 3 个操作:

    我更改了滚动视图内容插图(以便整个视图在键盘上方变得明显)。只有在此内容插图尚未修复时,我才会这样做。

    我还更改了滚动指示器插入以匹配 1 中的那个。

    最后,我将滚动视图内容偏移更改为某个特定值。

然而,奇怪的事情发生了。一旦我点击文本字段,滚动视图就会动画到大于特定值的内容偏移量,然后立即返回到该特定值。

我怀疑第 1 步和第 2 步都是造成这种情况的原因,所以我排除了它们,一切正常。但是,这让我的部分滚动视图隐藏在键盘下方。

编辑:这是我使用的代码(在文本字段开始编辑时调用):

        UIScrollView *scrollView = (UIScrollView *) self.view;

        if (scrollView.contentInset.bottom != C_SCROLL_VIEW_CONTENT_INSET_BOTTOM) 
            [scrollView setContentInset:UIEdgeInsetsMake(C_ORIGIN_ZERO,
                                                         C_ORIGIN_ZERO,
                                                         C_SCROLL_VIEW_CONTENT_INSET_BOTTOM,
                                                         C_ORIGIN_ZERO)];
            [scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(C_ORIGIN_ZERO,
                                                                  C_ORIGIN_ZERO,
                                                                  C_SCROLL_VIEW_CONTENT_INSET_BOTTOM,
                                                                  C_ORIGIN_ZERO)];
        

        if (textField.tag == C_TAG_BUTTON) 
            [scrollView setContentOffset:CGPointMake(C_ORIGIN_ZERO, C_ORIGIN_SHIFT_SCROLL_VIEW_FOR_CURRENT_Y)
                                animated:YES];
            return;
        

【问题讨论】:

请发布违规代码。 你把你的 UIView 改成 scrollView 了吗?或者您是否已经分配它并尝试通过以下行访问它:'UIScrollView *scrollView = (UIScrollView *) self.view;' 我的 UIView 实际上是一个滚动视图。这就是我添加这一行的原因。 你找到这个问题的答案了吗?我现在遇到了同样的问题。 【参考方案1】:

假设 C_SCROLL_VIEW_CONTENT_INSET_BOTTOM 是您的常量,我认为该值是错误的(太大)。

【讨论】:

以上是关于UIScrollView setContentOffset:动画:奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView里面的UIScrollView:滚动

问题:UIScrollview 弹跳使父 UIScrollview 弹跳

UIScrollView 嵌入其他 UIScrollView

分页 UIScrollView 内的 UIScrollView

UIScrollView

UIscrollView