UIScrollView不能在iOS7的iPhone顶部屏幕中滚动

Don*_*zzi 5 iphone objective-c uiscrollview ios7

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

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

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

- (BOOL)touchesShouldCancelInContentView:(UIView *)view {
  return YES;
}
Run Code Online (Sandbox Code Playgroud)

scroll.canCancelContentTouches = YES;
scroll.delaysContentTouches = YES;
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

有什么建议?

在此输入图像描述

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

Viz*_*llx 0

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

\n\n

请注意,您可以通过在视图和滚动视图\xe2\x80\x99s 子树外部的视图(例如滚动视图)之间创建约束,使滚动视图的子视图看起来浮动(而不是滚动)在其他滚动内容上。 xe2\x80\x99s 超级视图。

\n\n

解决方案

\n\n

将子视图连接到外部视图。换句话说,就是嵌入scrollview的视图。

\n\n

由于 IB 不允许我们在 imageView 和滚动视图\xe2\x80\x99s 子树之外的视图(例如滚动视图\xe2\x80\x99s 超级视图)之间设置约束,所以我在代码中完成了它。

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

和 !它起到了魅力的作用!

\n