【问题标题】:Scrolling Indicator Gets Stuck When Bouncing Is Disabled for UIScrollView为 UIScrollView 禁用弹跳时滚动指示器卡住
【发布时间】:2013-06-05 00:08:27
【问题描述】:

我有这个问题,我在任何地方都找不到任何其他提及。

基本上,如果我禁用 UIScrollView 中的弹跳(因此 UITableView 等衍生工具也会受到影响),如果用户滚动到顶部,则可能会导致滚动指示器卡住,然后使用另一个手势尝试继续滚动使用快速滑动。

一旦发生这种情况,除非用户再次滚动或点击滚动视图,否则滚动指示器不会消失。最大的问题是滚动视图会捕获该点击,因此如果您尝试点击表格单元格,那么第一次不会发生任何事情。

我在我的设备和模拟器上都只使用了一个准系统应用程序对此进行了测试,这似乎只是 UIScrollView 和禁用弹跳的一般问题;但是,就像我说的那样,我在互联网上找不到任何其他提及。

这只是一个错误吗?这是预期的行为吗?难道我做错了什么?如果这是一个错误,那么有人知道解决方法或修复方法吗?

【问题讨论】:

  • 我现在也有同样或类似的问题。我想我现在将启用弹跳...正如您所说,当出现此问题时,下一次点击将被表格视图“吞下”,因此必须点击两次才能选择单元格等。
  • 大家好,您找到解决此问题的方法了吗?谢谢。
  • 这个错误(或功能,等等)在 5 年后仍然存在于 iOS 11 中。我知道的唯一“修复”,我猜是启用.bounces

标签: ios cocoa-touch uiscrollview


【解决方案1】:

就我而言,我有两个 UIScrollView ,一个嵌套在另一个内部。 当内部 滚动视图 到达顶部时,我强制将 contentOffset.y 设置为 0(我需要这个以允许外部滚动视图开始滚动其内容视图)。这导致了此问题中描述的滚动视图不良行为。

修复将contentOffset.y 设置为-1,这允许滚动视图自然地(自行)滚动回0,并且挂起行为被解除.

希望这对其他人有所帮助✋

【讨论】:

    【解决方案2】:

    您是否为滚动视图添加了点击手势,如果没有,请尝试添加?

       UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self    action:@selector(resignsKeyboard)];
        [self.scrollView addGestureRecognizer:singleTap];
        singleTap.numberOfTapsRequired = 1;
        singleTap.delegate = self;
    

    在你的界面文件中添加委托 UIGestureRecognizerDelegate 然后实现点击手势的 delgate 方法

    -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
    {
     if (self.scrollView.superview != nil)
        {
            if ([touch.view isKindOfClass:[UIButton class]]||[touch.view.superview.superview isKindOfClass:[UITableViewCell class]]||[touch.view.superview.superview.superview isKindOfClass:[UITableViewCell class]]||[touch.view.superview isKindOfClass:[UITableViewCell class]])
                // we touched our control surface
            {
                return NO; // ignore the touch
            }
    
        }
    
        return YES; // handle the touch
    }
    

    //要在滚动触摸上执行其他操作,例如退出键盘,请根据需要使用

    -(void) resignsKeyboard
    {
        [self.view endEditing:YES];
        [self.scrollView setContentOffset:CGPointMake(0,0) animated:YES];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 2011-01-02
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多