禁用UITextView滚动包含视图?

时间:2011-10-25 00:31:23

标签: iphone uitableview scroll uitextview

我在UIScrollView中有一个UITextView(具体来说,文本视图位于表中的UITableViewCell中)。当我输入文本视图并点击返回以创建一些新行(并且文本视图中的文本变得太长而无法垂直包含)时,它会滚动文本视图本身(这是可以的)和包含它的表/表格单元格(我想阻止它)。有没有办法防止这种行为?

  • UITableView的scrollEnabled设置为NO,但UITextView仍会使其滚动。
  • 我已经考虑过继承UITextView并覆盖scrollRectToVisible什么都不做,但我不介意文本视图本身滚动,我想阻止它滚动包含视图。
  • 同样,在文本视图中将scrollEnabled设置为NO只会阻止它滚动,而不能阻止它滚动表格。
  • 键盘不会遮挡文本视图,但似乎仍然希望靠近屏幕顶部。

4 个答案:

答案 0 :(得分:1)

这个问题已经差不多一年了,但它让我疯狂了一段时间。

我终于设法通过继承UITextView来禁用该行为,覆盖名为scrollRectToVisibleInContainingScrollView的方法,并且在实现中绝对不执行任何操作。

它是一个UITextView的私有的,未记录的方法,显然可以处理超级视图的自动滚动。由于我们所做的只是进行子类化和重新定义方法(因此不依赖于预先存在的方法),所以它应该是可以接受的。

答案 1 :(得分:0)

对于它的价值,我最终通过在编辑时从UITableViewCell中删除UITextView并将其添加到包含表视图的视图控制器来解决此问题,然后在完成时将其返回到UITableViewCell。 p>

答案 2 :(得分:0)

目前尚不清楚您希望它如何运作。如果您只是需要阻止自动滚动,那么this回答可能有所帮助。当UITextView的高度增加时,如何获得与标准提醒应用程序类似的行为?我已在TableKit library

的示例中实现了此类行为

答案 3 :(得分:0)

我认为Jonathan M有正确的解决方案(我赞成他)。

我在UITableViewCell中有UITextView,当用户输入文本并且文本超出滚动视图的内容矩形时,偶尔会滚动表格视图。

我使用了一个类别而不是子类。

@interface UITextView (DISABLE_SCROLL_CONTAINING_VIEW)

- (void) scrollRectToVisibleInContainingScrollView;

@end

@implementation UITextView (DISABLE_SCROLL_CONTAINING_VIEW)

- (void) scrollRectToVisibleInContainingScrollView {
  return;
}

@end

entering text caused the containing table view to scroll up