【问题标题】:Vertical scrolling not working in UIScrollView and iOS7 and Xcode 5 despite not using Autolayout尽管没有使用 Autolayout,但垂直滚动在 UIScrollView 和 iOS7 和 Xcode 5 中不起作用
【发布时间】:2014-01-27 17:23:27
【问题描述】:

当我尝试在 iOS 7 和 Xcode 5 中使用 UIScrollView 时,它不响应垂直滚动。我首先将 ScrollView 从对象库拖放到 storyboard 并设置其大小为 width = 320 和 height = 1500,然后拖放三个标签,并将这些标签定位在 y = 300、800、1200。对于 y 坐标的标签等于 800 和 1200,我首先将滚动视图移动到上部,以使这些对象位于相应的 y 值处。然后,我将scrollview连接到实现文件作为出口,并在viewDidLoad方法中,我写self.myScrollView.contentSize = CGSizeMake(320, 1500)。最后将滚动视图的大小设置为宽度 = 320 和高度 = 568。 然后运行模拟器,但它对垂直滚动没有反应。然后我取消选择use autolayout 并再次运行模拟器,它仍然无法正常工作。

那么我该如何解决这个问题呢?或者任何人都可以告诉我任何有用的关于 iOS 7 和 Xcode 5 中的 UIScrollView 的教程(这很重要,因为我读过的每个教程都是基于以前的版本)?

我使用 Xcode 5.0.2。

谢谢。

【问题讨论】:

  • 在情节提要中,选择所有标签并启用用户交互。默认情况下它们被禁用。
  • 仅供在此处使用谷歌搜索的任何人使用。我有一个奇怪的地方,更新到 XCode6,由于某种原因,它在 Storyboard 中的视图上关闭(!)“启用用户交互”。谁知道为什么!我打开它,一切都很好。

标签: ios objective-c xcode uiscrollview


【解决方案1】:

这是自我回答

我将self.myScrollView.contentSize = CGRectMake(320, 1500);viewWillAppear 更改为viewDidLoad,然后运行模拟器,然后由于某些原因滚动现在可以工作了。正如我在原帖中所说,我首先在viewDidLoad 中写了它,并在我阅读了kkocabiyik 的答案后将其移至viewWillAppear。我不确定为什么我的原始代码不起作用 - 可能是因为我在从 Mani 和 Rashad 获得大量帮助期间稍微修改了我的代码,但同时将上述代码保留在 viewWillAppear 中。

对于那些会陷入同样的​​陷阱并在未来遇到这个问题的人,我已经能够通过这个设置解决这个问题:

  • viewDidLoad 内写入self.myScrollView.contentSize = CGSizeMake(320, 1500);
  • 将 UIScrollView 从 storyboard 连接到 myScrollView 作为 IBOutlet 属性
  • 不使用自动布局
  • 将 x = 0、y = 0、宽度 = 320、高度 = 568 设置为从情节提要内滚动视图

还要注意,使用自动布局不起作用。此外,在 viewWillAppear 中使用自动布局和设置 contentsize 也不起作用。

我想感谢在这个问题上帮助我的每一个人。谢谢。

【讨论】:

  • 您的解决方案在这里仍然不起作用。没有任何东西垂​​直滚动。你能提供一个示例项目吗?
  • 关于之前的评论者(尽管这是一个旧答案),请确保您在视图的“身份和类型”部分下的界面生成器中未选中“使用自动布局”。
  • 谢谢,节省了我的时间!
  • @Blaszard 感谢您的帮助,因为在您的解决方案中提到您没有使用自动布局,这意味着它仅适用于这种情况。如果有人在寻找自动布局的解决方案,我通过以下步骤解决了这个问题: 1- 在情节提要中添加滚动视图(在主视图或子视图中)应用相对于父视图的自动布局约束并在滚动视图中添加所有子视图。 2- 现在在 viewDidLayoutSubviews 内的 viewController 中使用 self.myScrollView.contentSize = CGSizeMake(contentWidth, contentHeight);就是这样,它现在应该可以工作了。干杯!
【解决方案2】:

看看this 视频。它展示了如何在 XCode 5 / iOS 7 中使用 UIScrollLayout 和自动布局。

【讨论】:

    【解决方案3】:

    你必须设置scrollview height as screensize or less than contentsize. 然后它才会垂直滚动。( contensize > scrollview.height) 并检查 bool vairable scrollEnabled set as YES

    【讨论】:

    • 我忘了提,但我也试过CGSizeMake(320, 568)CGSizeMake(320, 1000),但没用。
    • 你的滚动视图高度是多少?
    • x = 0,y = 0,宽度 = 320,高度 = 568。
    • 你可以调用延迟函数来检查真正的滚动视图高度吗?在 viewDidLoad 上调用这个 [self performSelector:@selector(doIt) withObject:nil afterDelay:1];添加一个函数 - (void)doIt{NSLog(@"%f", scrollview.frame.size.height)}
    • @user2360798 你启用了退回吗?只需启用反弹并尝试反弹。如果它不起作用,AutoLayout 或 autoresize 有问题吗?检查并告诉我们..
    【解决方案4】:

    设置 x = 0 和 y =0,您必须将内容大小设置为 (320,1500),而不是 x 和 y。 x 和 y 定义滚动视图的起始位置而不是内容大小。 对于内容大小:

        self.scrollView.contentSize = CGSizeMake(320, 1500);
    

    希望这会有所帮助.. :)

    【讨论】:

    • @user2360798,对标签执行相同操作。你的窗口不覆盖 x = 320 和 y = 1500。
    • 我才意识到这是错字。我不改变滚动视图的 x 和 y 坐标。刚刚编辑。对不起。
    • 至于标签,我更改了 x 和 y,而不是宽度和高度 - 否则它会更改标签的大小,而不是位置,如果我理解正确的话。
    • @user2360798 >> 您的问题与 Xcode 或 ios7 无关。因为我现在正在使用滚动视图。我也在使用 ios7 和 Xcode 5。
    • @User2360798 你解决了这个问题吗?我刚刚做了一个项目。如果你给你邮箱,我可以发给你。 :)
    【解决方案5】:

    在使用 AutoLayout 时,是否修改任何元素的框架都没有关系。具有 AutoLayout 的视图框架由它处理,因此它将忽略您在 viewDidLoad 方法上所做的事情。如果您必须使用 AutoLayout,您可以将您在 viewDidLoad 中所做的内容复制粘贴到 viewDidAppear,以便 AutoLayout 完成后它会完成所有工作。

    【讨论】:

    • 我认为它不对。因为我使用的是 autoLayout,并且我在 viewDidLoad 中设置了内容大小。它工作得很好。
    【解决方案6】:

    本教程用滚动视图救了我的命: Scroll View Autolayout Tutorial

    【讨论】:

      【解决方案7】:

      我在使用 Xcode 6 时也遇到了同样的问题。关注 this steps,它真的很有帮助,可以节省您的时间。

      【讨论】:

        【解决方案8】:

        onOffScroll.contentSize = CGSizeMake(content width,content height);

        使用viewDidLayoutSubviews 方法并使用该方法中的代码。 它可能会帮助你。

        【讨论】:

          【解决方案9】:

          我注意到情节提要中的滚动视图高度不能大于屏幕。如果您想要更大,请以编程方式进行,而不是在情节提要中。

          【讨论】:

            【解决方案10】:

            我遇到了一个问题,当我添加文本字段或图像时,我的滚动视图不起作用。我通过将所有内容放入堆栈视图中解决了这个问题。然后当我通过手机运行它时,我能够滚动。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-09-16
              • 2014-11-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-10-24
              相关资源
              最近更新 更多