我有UITextView:
textView = [[UITextView alloc] init];
textView.scrollEnabled = NO;
我只在iOS7上遇到问题:
在每次键盘击键时,在superview上调用layoutSubviews
。写完几个字后,它会陷入无限循环,并不断调用layoutSubviews
。
当我删除textView.scrollEnabled = NO;
代码行时,一切都按预期的方式工作。
我真的想在文本视图中禁用滚动。有人知道怎么做吗?
答案 0 :(得分:0)
最后,我通过在UITextView上放置Pan Gesture来攻击整个事物。这样,编辑文本视图的所有功能都得以保留,并且滚动被禁用。
当我想禁用文本视图的滚动时,我没有设置scrollEnabled = NO
。相反,我在UITextView上添加了Pan Gesture识别器。当我想启用滚动时,我只是从文本视图中删除了相同的Pan Gesture识别器。
像这样:
init方法......
_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];
}
}
效果很好;)