0

我有 UITextView:

textView = [[UITextView alloc] init];
textView.scrollEnabled = NO;

我只在 iOS7 上遇到问题:

在每次键盘击键时,layoutSubviews都会在 superview 上调用。在写了几个字符后,它陷入了无限循环并不断调用layoutSubviews

当我删除textView.scrollEnabled = NO;代码行时,一切都按照预期的方式工作。

我真的很想在我的文本视图上禁用滚动。有人知道怎么做吗?

4

1 回答 1

0

最后,我通过在 UITextView 上放置一个 Pan Gesture 来破解整个事情。这样,编辑文本视图的所有功能都被保留,并且滚动被禁用。当我想禁用文本视图的滚动时,我没有设置scrollEnabled = NO. 相反,我在 UITextView 上添加了 Pan Gesture 识别器。当我想启用滚动时,我只是从文本视图中删除了相同的平移手势识别器。

像这样:

初始化方法...

    _scrollDisablerGR = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(textViewScrollAction:)];
// method textViewScrollAction does nothing, empty implementation
    [_textView addGestureRecognizer:_scrollDisablerGR];

代码中的其他地方:

if (shouldEnableScrolling) {
        [self.textView removeGestureRecognizer:_scrollDisablerGR];
    } else {
        if (!_scrollDisablerGR.view) {
            [self.textView addGestureRecognizer:_scrollDisablerGR];
        }
    }

效果很好;)

于 2013-10-29T15:39:15.397 回答