【问题标题】:Unable to add UIScrollView to UITableView无法将 UIScrollView 添加到 UITableView
【发布时间】:2016-02-26 03:01:12
【问题描述】:

已更新 -- 我有一个 iPad 应用程序,最初是为纵向模式设计和编写的;我现在想添加一个 UIScrollView 以便它以横向模式滚动。选中自动布局并使用 Storyboard 构建不同的场景。 (我关注this tutorial)。 主要问题是当从纵向切换到横向时,框架的边界发生巨大变化,从而导致滚动逻辑出现问题。

这是我尝试将 UIScrollView 添加到的第一个场景 (UIView) 的图像:

这是横向模式下的样子(无滚动):

这是我在该场景的 -viewDidLoad 方法中的代码:

//  create UIScrollView
UIScrollView *scroll = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0,self.bookDetailView.frame.size.width, self.bookDetailView.frame.size.height)];
scroll.delegate = self;
scroll.pagingEnabled = YES;
scroll.scrollEnabled = YES;
scroll.showsVerticalScrollIndicator = YES;
CGSize scrollableSize = CGSizeMake(768, 1024);  //  size of portrait mode
scroll.contentSize = scrollableSize;

[self.view addSubview: scroll];

现在显示滚动条(尽管它很细),但尽管它按应有的方式移动,但 UIView 没有移动。纵向模式工作正常(不需要滚动),但横向模式根本不滚动(即使垂直滚动条确实移动)。我想知道是否应该放弃将滚动用于横向模式的想法,而改为为横向模式创建单独的场景。

【问题讨论】:

  • 你的 UIScrollView 的 contentSize 设置了吗?
  • 您好,您如何将视图添加到 UIScrollView?而且,您如何设置该视图的自动调整大小/自动布局?

标签: objective-c uitableview uiscrollview ios9.1 xcode7.1


【解决方案1】:

有什么理由需要单独的 UIScrollView 吗? UITableView 已经是一个滚动视图。我的猜测是您创建的 UIScrollView 的触摸事件会干扰 UITableView 的触摸事件。

【讨论】:

  • 所以它最初并不是一个 UITableView,你只是想让你已经存在的内容滚动?如果是这样,那么您需要做的就是将您的内容视图添加到 UIScrollView 中。然后,您需要设置 UIScrollViews 内容大小,以了解让用户滚动多远。这可能是您的滚动视图没有滚动的原因。
  • UIScrollView *myScrollView = [[UIScrollView alloc] initWithFrame:...]; [myScrollView addSubview:contentView]; myScrollView.contentSize = CGMakeSize(宽度, 高度);
  • 另外,[self.bookDetailView addSubview:scroll];这与您需要做的相反。您需要将 bookDetailView 添加到滚动视图中,而不是相反。在您设置滚动视图的 contentSize 之前,它仍然不会滚动,如上所述。您可以简单地获取 bookDetailView 的边界并使用它来获取 contentSize 的宽度和高度。
  • scrollingEnabled 设置为 true 吗?
  • 还要确保将滚动视图添加到视图控制器。您不能只是简单地将 bookDetailView 添加到滚动视图中而不首先将滚动视图添加到您的视图控制器中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
  • 2012-02-14
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 2017-12-19
相关资源
最近更新 更多