UITextView中不需要的滚动空间

时间:2014-11-25 07:10:00

标签: ios uitextview uikeyboard

我有一个UITextView覆盖了故事板中的整个视图控制器设置。顶部布局指南,底部布局指南,前导边距和尾随边距存在约束。

我已注册键盘通知以调整内容插件,如下所示:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardAppeared:)
                                             name:UIKeyboardDidShowNotification
                                           object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardDisappeared:)
                                             name:UIKeyboardDidHideNotification
                                           object:nil];

keyboardAppeared的实现:

- (void)keyboardAppeared:(NSNotification *)notification {
    NSDictionary *notificationUserInfo = [notification userInfo];
    CGRect keyboardRect = [[notificationUserInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    self.textView.contentInsets = UIEdgeInsetsMake(0, 0, keyboardRect.heignt, 0);
    self.textView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, keyboardRect.height, 0);
}

keyboardDisappeared的实现:

- (void)keyboardDisappeared:(NSNotification *) {
    self.textView.contentInsets = UIEdgeInsetsZero;
    self.textView.scrollIndicatorInsets = UIEdgeInsetsZero;
}

这里遇到的麻烦是当键盘出现时,如果textView文本较少,textView中会有不需要的滚动。当文本大小超过textView高度时,不会显示不需要的滚动。

请帮忙!

1 个答案:

答案 0 :(得分:2)

解决了它。这个问题非常罕见,但是如果有人被困,这就是解决方案。

我曾经在viewDidLoad中设置textView的文本,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.textView setScrollEnabled:YES];
    [self.textView setText:#-some text-#];
    [self.textView setScrollEnabled:NO];
}

我关闭了滚动,以便文本视图不会在设置文本时滚动到底部。这造成了额外滚动的问题。 (我不确定为什么)

我使用此解决方案来解决问题:https://stackoverflow.com/a/3287419