将滚动视图添加到视图

Posted

技术标签:

【中文标题】将滚动视图添加到视图【英文标题】:Adding scrollview to a view 【发布时间】:2016-06-07 22:38:33 【问题描述】:

我已经尝试过Adding UIScrollView to a UIViewController,当我滚动时,无论是在真实设备上的模拟器上,我都无法让我的视图向下移动。我也试过增加大小,所以我的代码如下:

+(void)addScrollViewToView:(UIView *)view

    UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, view.bounds.size.width * 2, view.bounds.size.height * 2)];
    scrollView.backgroundColor = [UIColor clearColor];
    scrollView.scrollEnabled = YES;
    scrollView.pagingEnabled = YES;
    scrollView.showsVerticalScrollIndicator = YES;
    scrollView.showsHorizontalScrollIndicator = YES;
    scrollView.contentSize = CGSizeMake(view.bounds.size.width * 2, view.bounds.size.height * 2);
    [view insertSubview:scrollView atIndex:0];
    //[view sendSubviewToBack:scrollView]; - commented out

在 viewDidLoad 中这样调用:

@implementation MyLoginViewController

- (void)viewDidLoad

   [super viewDidLoad];
    [Utils addScrollViewToView:self.view];

    self.passwordTextField.secureTextEntry = YES;

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                   initWithTarget:self
                                   action:@selector(dismissKeyboard)];

    [self.view addGestureRecognizer:tap];

 // viewDidLoad method ends here

当我尝试在模拟器上用鼠标向上滚动时,没有任何响应。我使用情节提要创建的视图控制器有一个背景图像。更改索引会有什么不同吗?

【问题讨论】:

【参考方案1】:

这是因为您添加了手势识别器。手势识别器阻止而不是通过您的触摸。 您可以使用 UIScrollView 将其设为关闭键盘:

+(void)addScrollViewToView:(UIView *)view

   // your code
   scrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;

并删除 UITapGestureRecognizer。

【讨论】:

【参考方案2】:

还是因为您的帧大小与您的内容大小相同?滚动视图仅在其内容大于其框架时才会滚动。

【讨论】:

【参考方案3】:

诀窍是将视图添加到滚动视图。

即:

查看 > 滚动视图 > 我想滚动的视图

不是:

要滚动的视图 > 滚动视图。

【讨论】:

以上是关于将滚动视图添加到视图的主要内容,如果未能解决你的问题,请参考以下文章

将滚动视图添加到视图

将应用栏滚动视图行为添加到 CoordinatorLayout 中的多个视图

将视图添加到将拉伸以填充可用宽度的滚动视图

滚动视图无法执行委托,但表视图可以

将滚动视图添加到 UIView

如何将带有按钮的视图(目标操作)添加到滚动视图