UIScrollView setContentOffset:animated:奇怪的行为

时间:2012-08-11 04:43:43

标签: ios objective-c uiscrollview uitextfield

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

  1. 我更改滚动视图内容插入(以便整个视图在键盘上方变得明显)。如果没有修复此内容插入,我只会这样做。

  2. 我还更改滚动指示符插入以匹配1中的滚动指示符。

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

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

    我怀疑第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;
            }
    

1 个答案:

答案 0 :(得分:0)

假设C_SCROLL_VIEW_CONTENT_INSET_BOTTOM是你的常量,我认为这个值是错误的(太大了)。