首页 文章

禁用UITextView滚动包含视图?

提问于
浏览
2

我在UIScrollView中有一个UITextView(具体来说,文本视图位于表中的UITableViewCell中) . 当我输入文本视图并点击返回以创建一些新行(并且文本视图中的文本变得太长而无法垂直包含)时, it scrolls both the text view itself (which is okay) and the table/table cell that contains it (which I would like to prevent) . 有没有办法防止这种行为?

  • UITableView将scrollEnabled设置为NO,但UITextView仍然使其滚动 .

  • 我've thought about subclassing UITextView and overriding scrollRectToVisible to do nothing, but I don' t介意文本视图本身滚动,我想阻止它滚动包含视图 .

  • 同样,在文本视图上将scrollEnabled设置为NO只会阻止它滚动,而不能阻止它滚动表格/表格单元格 .

  • 键盘没有遮挡文本视图,但似乎它仍然想要靠近屏幕顶部 .

4 回答

  • 0

    这个问题差不多已经有一年了,但它让我疯了一会儿 .

    我终于设法通过子类化 UITextView 来禁用该行为,重写一个名为 scrollRectToVisibleInContainingScrollView 的方法,并且在实现中绝对不做任何事情 .

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

  • 1

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

  • 0

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

  • 0

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

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

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

    @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

相关问题