不断增长的UITextView禁用UIScrollView

时间:2015-07-08 13:33:12

标签: ios objective-c uiscrollview autolayout uitextview

我尝试使用内容大小实现不断增长的UITextView,我正在使用this class和自动布局,但效果很好但我的问题是我的内部滚动视图是不滚动。

在添加viewDidLoad中增加文本视图的方法之前滚动。

这就是我的xib:

enter image description here

  • 查看
    • outerScrollView
      • innerScrollView
        • 标签
      • 成长UITextView

我这样做是为了在scrollview

之间切换滚动
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if([scrollView isEqual:self.innerScrollview]){
        self.outerScrollview.scrollEnabled = NO;
        self.innerScrollview.scrollEnabled = YES;
    }
    else{
        self.outerScrollview.scrollEnabled = YES;
        self.innerScrollview.scrollEnabled = NO;

    }

}

并在 viewDidLoad 中的" msg"是不断增长的文本观点:

self.msgHandler = [[GrowingTextViewHandler alloc]initWithTextView:self.msg withHeightConstraint:self.msgHeight];
    [self.msgHandler updateMinimumNumberOfLines:1 andMaximumNumberOfLine:INT_MAX];

并在 textViewDidChange

- (void)textViewDidChange:(UITextView *)textView {
    [self.msgHandler resizeTextViewWithAnimation:YES];
}

那么为什么不断增长的文本会影响内部滚动视图的滚动?

int outerContentHeight = self.outer_last_label.frame.size.height + self.outer_last_label.frame.origin.y; 

int innerContentHeight = self.inner_last_label.frame.size.height + self.inner_last_label.frame.origin.y; 

[self.outerSrollview setContentSize:CGSizeMake([[UIScreen mainScreen] bounds].size.width,outerContentHeight)]; 

[self.innerScrollview setContentSize:CGSizeMake(self.scrollview2.frame.size.width, innerContentHeight)];

我已设法修复它,但我删除了该类的使用" GrowingTextViewHandler"我这样做了

我更改了" scrollViewDidScroll"对此:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if([scrollView isEqual:self.innerScrollview]){
        [self.view insertSubview:self.innerScrollview atIndex:0];
    }
    else{
        [self.view insertSubview:self.outerScrollview atIndex:0];

    }

}

并更改" textViewDidChange"到这个

- (void)textViewDidChange:(UITextView *)textView {

float height = self.msg.contentSize.height;
    [UITextView beginAnimations:nil context:nil];
    [UITextView setAnimationDuration:0.5];

    self.msgHeightConstraint.constant = height + 10.0; //Give it some padding

    [UITextView commitAnimations];
}

1 个答案:

答案 0 :(得分:0)

请设置滚动视图的内容大小,不要更改代码中的任何内容,然后选中

  [self.scrollViewOuter setContentSize:CGSizeMake(200, 1000)];
    [self.scrollViewInner setContentSize:CGSizeMake(200, 1000)];

我的两个滚动视图都在工作,如果我在其中添加内容大小。 enter image description here