当UITextView成为第一响应者时,为什么UIScrollView不向上滚动?

时间:2017-09-08 07:12:20

标签: ios objective-c uiscrollview uitextfield uitextview

当用户点击按钮在UITextView上添加UITextView时,

UIScrollView成为第一响应者。实际上,UITextView中添加了包含UITextFieldUIScrollView的UIView。当键盘出现时,scrollview不会向上滚动,但UITextField会在它成为第一响应者时向上滚动。我注册UIKeyboardDidShowNotification向上滚动。以下是我的代码

- (void)keyboardDidShow:(NSNotification *)notification {
        CGRect keyboardEndFrame;
        [(notification.userInfo)[UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];

        NSInteger height = CGRectGetHeight(keyboardEndFrame);

        NSInteger lastObj = arrayTotalObjects.count - 1;
        UIView *lastView = [arrayTotalObjects objectAtIndex:lastObj];

        if(!(lastView.frame.origin.y > height))
            return;

        UIEdgeInsets inset = originalInset;
        inset.bottom += height;
        NSLog(@"inset: %f", inset.bottom);

        [UIView animateWithDuration:0.3f animations:^{
            scrlView.contentInset = inset;
        }completion:^(BOOL finished) {
            NSLog(@"scrlView inset bottom: %f", scrlView.contentInset.bottom);
        }];
}

在这种情况下,lastView将是包含UITextView的UIView。

此代码适用于UITextField,但不适用于UITextView。怎么可能?是因为UITextViewUIScrollView的子类吗?

2 个答案:

答案 0 :(得分:0)

简而言之,您的问题的答案是肯定的,这种行为是由UITextView作为UIScrollView的子类引起的。您可以找到更多详细信息,以及如何禁用它的解决方案,here

答案 1 :(得分:0)

如果有人看到这个问题,答案是UITextView scrolling enabled false

lawicko的回答中,我得到了一个提示。 subclass of UIScrollView

它对我有用。