繁体   English   中英

UIScrollView无法在iOS7的iPhone顶部屏幕中滚动

[英]UIScrollView not scroll in top screen of iPhone with iOS7

我在使用iOS 7的iPhone中使用UIScrollView时出现问题

我以编程方式创建了水平UIScrollView,我添加了一些彩色按钮,最后我将滚动定位在屏幕顶部。

滚动是一个自定义滚动,所以我可以处理

- (BOOL)touchesShouldCancelInContentView:(UIView *)view {
  return YES;
}

scroll.canCancelContentTouches = YES;
scroll.delaysContentTouches = YES;

即使按下按钮,也允许滚动移动

一切都很完美,除了屏幕顶部,滚动不动。 但我可以按下按钮。 如果我放下滚动条(大约30px)我可以在它的上部滚动它(内容大小和框架是正确的)

我使用info.plist设置“查看基于控制器的状态栏外观= NO”删除了iOS 7的状态栏

似乎在状态栏区域我无法拖动滚动。

有什么建议么?

在此输入图像描述

编辑:有趣的是,如果在滚动之前,您下拉了通知选项卡,那么滚动甚至在上部也可以工作。 当通知选项卡向上移动时,问题返回。 好像第一次触摸是由选项卡管理而不是将其传递给滚动

是的,UIScrollView在纯自动布局环境中发生了一些奇怪的事情。 第二十次重新阅读iOS SDK 6.0发行说明我发现:

请注意,通过在视图和滚动视图子树外部的视图(例如滚动视图的超级视图)之间创建约束,可以使滚动视图的子视图显示为浮动(不滚动)在其他滚动内容上。

将子视图连接到外部视图。 换句话说,对于嵌入了scrollview的视图。

由于IB不允许我们在imageView和滚动视图的子树外部的视图之间设置约束,例如滚动视图的超视图,然后我在代码中完成了它。

- (void)viewDidLoad {
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
    [self.view removeConstraints:[self.view constraints]];
    [self.scrollView removeConstraints:[self.scrollView constraints]];
    [self.imageView removeConstraints:[self.imageView constraints]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[_scrollView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_scrollView)]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_scrollView]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_scrollView)]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[_imageView(700)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_imageView)]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_imageView(1500)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_imageView)]];
}

而且! 它充当魅力!

您的目标是iOS7还是早期版本? 如果它是iOS7并且您更改为iOS6.1并获得预期的行为,则很可能是bug。

另一种方法是检查同事已经建议的自动布局约束,当然还要观察与之相关的contentFrame属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM