我有一个UIView
像iPhone的跳板。我使用UIScrollView
和UIButtons
创建了它。我想在所述滚动视图上禁用水平滚动。我只想要垂直滚动。我如何做到这一点?如何禁用UIScrollView的水平滚动?
回答
您必须设置UIScrollView
的contentSize
财产。例如,如果你的UIScrollView
是320个像素宽(在屏幕的宽度),那么你可以这样做:
CGSize scrollableSize = CGSizeMake(320, myScrollableHeight);
[myScrollView setContentSize:scrollableSize];
的UIScrollView
将仅垂直滚动,因为它已经可以水平显示的一切。
嗨。这个解决方案工作得很好!感谢那。我尝试将静态宽度设置为0.对于我来说,这也起作用。我不知道以后会不会有一些副作用。但如果不知道尺寸(即适用于iPhone和iPad的通用代码),这种方法效果非常好! – JackPearse 2011-04-28 10:32:48
我认为CGSizeMake(0,myScrollableHeight)更好,所以即使并非所有的子视图都显示,水平滚动功能也是禁用的。 – LightNight 2013-08-29 16:11:05
注意使用分页时将其中一个尺寸设置为0将导致VoiceOver将页码声明为“第1页的1”,而不管其值是否为 – josef 2014-01-10 01:09:34
更新:
(@EranMarom在他的评论中指出后),您可以停在ScrollViewDelegate
方法水平滚动或垂直滚动。 这是怎么了,
停止水平滚动条:
如果你要水平滚动,那么你就需要增加contentOffset.x。防止停止scrollview水平滚动。
- (void)scrollViewDidScroll:(UIScrollView *)sender {
sender.contentOffset.x = 0.0
}
停止垂直滚动:
如果要垂直滚动,那么你就需要增加contentOffset.y。防止停止scrollview垂直方向的滚动。
- (void)scrollViewDidScroll:(UIScrollView *)sender {
sender.contentOffset.y = 0.0
}
上面的代码防止改变x
和scrollview contentOffset
的y
,并导致停止滚动的scrollViewDidScroll:
方法。
因为iOS7使用
self.automaticallyAdjustsScrollViewInsets = NO;
//与
self.pageView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[self.pageView setContentSize:CGSizeMake(self.view.frame.size.width*3, self.view.frame.size.height)];
[self.pageView setShowsVerticalScrollIndicator:NO];
[self.pageView setPagingEnabled:YES];
[self.view addSubview:self.pageView];
一旦我做到了与一个UITableView只有1电池更换的UIScrollView 3页创建你页面滚动,它工作得很好。
我努力了一段时间尝试在这个和其他线程中的各种建议失败。
然而,在另一个线程(不知道在哪里),有人建议使用在UIScrollView的负面约束为他工作。
所以我尝试了不一致的结果约束的各种组合。最终对我的工作是将-32的前后约束添加到滚动视图中,并添加宽度为320(和居中)的(不可见)文本视图。
迅速解决
创建两个出口,一个是你的观点,一个用于滚动视图:
@IBOutlet weak var myView: UIView!
@IBOutlet weak var scrollView: UIScrollView!
在viewDidLayoutSubviews您可以添加以下代码
然后:
let scrollSize = CGSize(width: myView.frame.size.width,
height: myView.frame.size.height)
scrollView.contentSize = scrollSize
什我们已经完成了收集视图的高度和宽度,并设置scrollViews的内容大小以匹配它。这将停止您的滚动视图水平滚动。
再认识:
CGSizeMake需要宽度&使用高度CGFloats。您可能需要使用UIScrollViews现有高度作为第二个参数。这将是这样的:
let scrollSize = CGSize(width: myView.frame.size.width,
height: scrollView.contentSize.height)
您可以选择视图,然后在Attributes Inspector
取消选中User Interaction Enabled
。
我有tableview中contentInset在viewDidLoad中设置(如下图),这是什么导致水平滚动
self.tableView.contentInset = UIEdgeInsetsMake(0, 30, 0, 0);
检查是否有任何的tableview contentInset设置不同的原因,并禁用它
试试这个:
CGSize scrollSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, scrollHeight);
[scrollView setContentSize: scrollSize];
使用这一行。
self.automaticallyAdjustsScrollViewInsets = NO;
- 1. 的UIScrollView不滚动水平
- 2. UIScrollView水平滚动 - 禁用左侧滚动
- 3. 如何在UIScrollView中禁用水平滚动?
- 4. 如何禁用NSScrollView的水平滚动?
- 5. 如何禁用jquery的水平滚动?
- 6. 如何禁用uiwebview的水平滚动?
- 7. UIScrollView无法水平滚动
- 8. 无限水平滚动UIScrollView
- 9. Netbeans禁用水平滚动
- 10. 禁用UITableView水平滚动
- 11. UIScrollView里面的水平UIStackView不滚动
- 12. UIScrollView的水平滚动不工作
- 13. 如何禁用第2页/共3页上的UIScrollView进行水平滚动?
- 14. 禁用水平拖动滚动
- 15. JavaFX:禁用TableView的水平滚动条
- 16. 禁用jscrollpane中的水平滚动
- 17. 禁用片段中的水平滚动
- 18. Uiscrollview水平和垂直滚动
- 19. iOS UIScrollView只能水平滚动
- 20. 在iPad上水平滚动时uiscrollview laggging
- 21. 使用JavaScript禁用水平滚动条
- 22. 在iPad上禁用水平滚动
- 23. C#ListView禁用水平滚动条
- 24. 在PhpStorm中禁用水平滚动
- 25. 禁用slickgrid水平滚动条
- 26. Bootstrap侧导航禁用水平滚动
- 27. 禁用水平垂直滚动iOS
- 28. 如何禁用Mobile Flex应用程序中的水平滚动?
- 29. 使用垂直滚动检测UIScrollView中的水平滑动
- 30. 如何水平滚动scrollview
你应该改变你的标题:你问的这个问题的水平和垂直的称号。人们后来在搜索引擎上找到你的问题,所以它仍然重要2年后:) – Julien 2011-06-18 22:15:16
@RahulVyas上面的人有一个点。改变标题可以减少任何通过搜索引擎(例如我)来到这里的初学者的困惑)。 – SpacyRicochet 2011-09-12 09:23:50
已经代表海报编辑了标题。 (虽然目前正在等待同行评议,编辑才会显现。) – 2011-09-28 12:02:00