UIScrollView 是不是仅适用于嵌入在导航控件中的视图控制器?

Posted

技术标签:

【中文标题】UIScrollView 是不是仅适用于嵌入在导航控件中的视图控制器?【英文标题】:Does UIScrollView only work on a view controller that is embedded in a Navigation Control?UIScrollView 是否仅适用于嵌入在导航控件中的视图控制器? 【发布时间】:2013-07-12 17:21:06 【问题描述】:

UIScrollView 是否仅适用于嵌入在导航控件中的视图控制器?我问的原因是因为我有一个 UIViewController,它有一个 UISCrollView 来显示超出视图的所有内容。这个 ViewController 是从 TableViewController 中的 push segue 中显示的,它嵌入到 Navigation Controller 中。

在我尝试将 push segue 更改为模态序列之前,一切正常,从而将视图从嵌入到导航控制器中移除。

所有内容都可以正常加载,但不会滚动。我添加了一个插座并尝试以编程方式设置 contentSize 和 scrollEnabled 属性,但仍然没有。它不会再滚动了,我无法弄清楚。我一直在网上搜索,但找不到答案。

出口:

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

实施:

- (void)viewDidLoad

    [super viewDidLoad];
    self.scrollView.contentSize  = CGSizeMake(320, 900);
    self.scrollView.scrollEnabled = YES;

【问题讨论】:

尝试暂时将其设置回 push segue 以确保没有其他问题,并验证这是唯一的更改。 你知道它在 Push segue 中也不起作用。我以为是,但显然它只是滚动导航栏占用的额外空间。 【参考方案1】:

有许多帖子表明在 viewDidLoad 中设置滚动视图的 contentSize 存在问题。尝试将其移动到 viewDidAppear。

【讨论】:

它在 push segue 之后肯定可以工作,但在模态 segue 之后仍然无法工作。我想我现在只使用 push segue。【参考方案2】:

我必须将 UIScrollView 放在另一个空的 UIView 中才能使其工作。

- (void)viewDidLoad

    [super viewDidLoad];


-(void)viewDidAppear:(BOOL)animated

    self.scrollView.contentSize  = CGSizeMake(320, 900);
    self.scrollView.scrollEnabled = YES;

【讨论】:

another empty UIView in order to get it to work 这是我的钥匙,谢谢

以上是关于UIScrollView 是不是仅适用于嵌入在导航控件中的视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView : UIEdgeInsets 仅适用于“顶部”和“左侧”

在 UIScrollView 中嵌入 UITableView/UICollectionView

导航控制器调整大小仅适用于纵向?

包含在嵌入导航控制器的视图控制器中时,UIScrollView 不滚动

有人可以解释多点触控缩放是不是应该适用于 UITextView 或 UIScrollView

segues 仅适用于导航控制器吗? [关闭]