无法在UIScrollView中的UITextView中选择/编辑文本

时间:2015-08-24 10:01:28

标签: ios objective-c uiscrollview uitextfield masonry

我使用Masonry设置了我的UIScrollView子视图:

- (void)setupViews {
    self.view.backgroundColor = [UIColor Background];
    self.scrollView = [UIScrollView new];
    self.scrollView.alwaysBounceVertical = YES;
    [self.view addSubview:self.scrollView];
    [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(self.view);
    }];
    self.contentView = [UIView new];
    [self.scrollView addSubview:self.contentView];
    self.scrollView.backgroundColor = [UIColor clearColor];
    [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(self.scrollView);
        make.left.and.right.equalTo(self.view);
    }];
    self.imageButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.imageButton sd_setImageWithURL:[NSURL URLWithString:self.card.cardImageURL] forState:UIControlStateNormal];
    [self.imageButton.imageView setContentMode:UIViewContentModeScaleAspectFill];
    [self.contentView addSubview:self.imageButton];
    [self.imageButton mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.top.and.right.equalTo(self.contentView);
        make.height.equalTo(self.imageButton.mas_width).multipliedBy(3/4.0);
    }];
    self.textField = [UITextField new];
    self.textField.backgroundColor = [UIColor whiteColor];
    self.textField.font = kFontRegular(14);
    self.textField.text = self.card.cardTitle;
    [self.contentView addSubview:self.textField];
    [self.textField mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.contentView).with.offset(8);
        make.top.equalTo(self.imageButton.mas_bottom).with.offset(8);
        make.right.equalTo(self.contentView).with.offset(-8);
        make.height.equalTo(@(45));
    }];
}

但它不会让我与UITextField进行交互。这里有什么元素阻止用户交互? DEMO

1 个答案:

答案 0 :(得分:1)

您的contentView的高度将为零。所以它永远不会得到一些触摸事件。你不应该使用这个约束:

make.edges.equalTo(self.scrollView);

它无法获得正确的值。尝试为contentView设置顶部和高度约束。

make.top.equalTo(@0);
make.height.equalTo(@700);