UIButton不响应当放置在其容器UIScrollView之外时

时间:2016-09-04 22:27:29

标签: ios objective-c uiscrollview uibutton

我有一个UIScrollView。在这个UIScrollView里面是一个UIView,它包含所有其他子视图(包括UIButton)。它与UIScrollView具有相同的边界。

我想:

  1. UIScrollView的底部不可滚动(放置UIButton的位置)。
  2. UIButton响应迅速。
  3. 所以我将UIScrollView的底部设置为比UIVIew略高,如下图所示:

    enter image description here

    这将使UIButton无法响应(它在左侧布局中响应)。有什么建议吗?谢谢!

    我的代码的一部分:

    self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectZero];
    [self addSubview:self.scrollView];
    self.scrollContent = [[UIView alloc] initWithFrame:CGRectZero];
    [self.scrollView addSubview:self.scrollContent];
    
    self.button = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.scrollContent addSubview:self.button];
    [self.button addTarget:self
                    action:@selector(buttonPressed)
          forControlEvents:UIControlEventTouchUpInside];
    

    更新

    看起来正确的方法是保持滚动视图的底部并设置其contentSize,但由于我使用autolayout,我发现contentSize的高度始终为零???

2 个答案:

答案 0 :(得分:0)

您需要将按钮放在滚动视图视图层次结构之外的视图中。

目前,命中测试失败,因为该按钮位于滚动视图边界之外但在其层次结构内。

答案 1 :(得分:0)

在尝试以下代码后,将按钮添加到滚动视图中:

self.scrollView = [[UIScrollView alloc] initWithFrame:CGRectZero];
    [self addSubview:self.scrollView];
    self.scrollContent = [[UIView alloc] initWithFrame:CGRectZero];
    [self.scrollView addSubview:self.scrollContent];

        self.scrollView.delaysContentTouches = NO; //Add this line

    self.button = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.scrollContent addSubview:self.button];
    [self.button addTarget:self
                    action:@selector(buttonPressed)
          forControlEvents:UIControlEventTouchUpInside];