Objective-C:如何在 UIScrollView 中禁用垂直滚动

Posted

技术标签:

【中文标题】Objective-C:如何在 UIScrollView 中禁用垂直滚动【英文标题】:Objective-C: How to disable verticall scrolling in UIScrollView 【发布时间】:2015-10-10 03:59:53 【问题描述】:

我将以编程方式将 UIScrollView 添加到 UIView 中。 我尝试为此使用以下代码,但滚动视图仍未禁用。

-(id)initWithFrame:(CGRect)frame 
...
  _scrollView = [[UIScrollView alloc] initWithFrame:CGRectZero];
  [self addSubview:_scrollView];
...

-(void)layoutSubviews 
...
  _scrollView.frame = CGRectMake(0, 0, self.frame.size.width, 40);
  [_scrollView setContentSize:CGSizeMake(self.frame.size.width * 2, 40)];
...

我认为它应该可以工作,但现在不行。 请告诉我问题是什么。 谢谢

【问题讨论】:

您是否尝试将滚动设置为NO 好吧,不过我需要水平滚动。 【参考方案1】:

好吧,试着像这样设置 contentSize:

[_scrollView setContentSize:CGSizeMake(self.frame.size.width * 2, 0)];

让我知道结果。谢谢。

【讨论】:

【参考方案2】:

尝试设置_scrollView.scrollEnabled = NO; 这将禁用scrollView 垂直或水平滚动。

更新:仅避免垂直滚动

Refer this link

你需要设置你的scrollView的框架,然后设置它的contentSize

_scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,scrollView.frame.size.height);

【讨论】:

它同时禁用垂直和水平滚动。我只需要启用水平滚动。 在我的问题中,scrollview frame 和 contentsize 的高度目前都是 40。但它不起作用。【参考方案3】:

为此,您必须设置 - 您的滚动视图内容高度是滚动视图高度

_scrollView.contentSize = CGSizeMake(_scrollView.contentSize.width,_scrollView.frame.size.height);

另外一种方式是

如果 scrollView 的 contentSize.height 小于它的 bounds.size.height 它不会垂直滚动。

你需要设置

 scrollView.contentSize = (CGSize)<yourContentWidth>, 1.0

【讨论】:

在我的问题中,scrollview frame 和 contentsize 的高度目前都是 40。但它不起作用。【参考方案4】:

你只需要水平滚动,不需要垂直滚动。试试下面的代码。我不知道你卡在哪里了:

(void)viewDidLoad 
    [super viewDidLoad];
    [self CreateScrollView];


(void)CreateScrollView 

   UIScrollView *Scroll_View = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, 40)];
  [self addSubview:Scroll_View];
  [_scrollView setContentSize:CGSizeMake(self.frame.size.width * 2, 40)];    

【讨论】:

【参考方案5】:

你可以试试下面的代码:

目标 - C

CGFloat y = SCROLLVIEW_HEIGHT;

self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, y);

在 Swift 中

self.scrollView.contentSize.height = 1.0 

【讨论】:

【参考方案6】:

你可以这样试试:

[_scrollView setShowsVerticalScrollIndicator:NO];

【讨论】:

OP 想要禁用滚动。您的代码只会隐藏滚动指示器。你应该编辑你的答案。 :)

以上是关于Objective-C:如何在 UIScrollView 中禁用垂直滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 UIScrollView 何时变为可滚动?

如何在c++中,调用objective-c

如何在 iOS 上的 UIScrollView 中正确替换 UIImageView 中的图像

委托如何工作和委托在objective-c中的工作流程

如何在 Objective-C 中打印单个数组元素?

在这种情况下如何确定是不是发生错误(Objective-C)