我有一個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. 如何在iPad上的UIScrollView中禁用水平滾動?
- 2. 如何禁用水平滾動? (不去除水平滾動條)
- 3. 的UIScrollView不滾動水平
- 4. UIScrollView水平滾動 - 禁用左側滾動
- 5. 如何在UIScrollView中禁用水平滾動?
- 6. 如何禁用NSScrollView的水平滾動?
- 7. 如何禁用jquery的水平滾動?
- 8. 如何禁用uiwebview的水平滾動?
- 9. 無限水平滾動UIScrollView
- 10. UIScrollView無法水平滾動
- 11. 如何禁用水平滾動在android
- 12. 如何禁用水平滾動視圖?
- 13. 禁用水平滾動
- 14. Netbeans禁用水平滾動
- 15. jQuery.draggable()禁用水平滾動
- 16. 禁用水平滾動
- 17. 禁用UITableView水平滾動
- 18. Java:jscrollpane禁用水平滾動
- 19. 如何在用戶水平滾動時禁用垂直滾動?
- 20. UITableViewCell內部的UIScrollView - 水平滾動
- 21. UIScrollView的水平滾動不工作
- 22. UIScrollView的自定義水平滾動
- 23. UIScrollView裏面的水平UIStackView不滾動
- 24. 如何禁用第2頁/共3頁上的UIScrollView進行水平滾動?
- 25. 如何以編程方式向UIScrollView添加按鈕時禁用水平滾動?
- 26. 禁用水平拖動滾動
- 27. GWT禁用水平拖動滾動
- 28. 禁用片段中的水平滾動
- 29. 禁用手機的水平滾動
- 30. JavaFX:禁用TableView的水平滾動條
你應該改變你的標題:你問的這個問題的水平和垂直的稱號。人們後來在搜索引擎上找到你的問題,所以它仍然重要2年後:) – Julien 2011-06-18 22:15:16
@RahulVyas上面的人有一個點。改變標題可以減少任何通過搜索引擎(例如我)來到這裏的初學者的困惑)。 – SpacyRicochet 2011-09-12 09:23:50
已經代表海報編輯了標題。 (雖然目前正在等待同行評議,編輯纔會顯現。) – 2011-09-28 12:02:00