编辑另一个单元格时,集合视图会自动跳转到第一个单元格

Posted

技术标签:

【中文标题】编辑另一个单元格时,集合视图会自动跳转到第一个单元格【英文标题】:Collection view automatically jumps to first cell when editing another cell 【发布时间】:2017-05-19 04:48:38 【问题描述】:

我正在尝试向集合视图单元格输入文本,每当我编辑第二个单元格时,集合视图会在键盘显示时滚动到第一个单元格,这是情节提要上的设置:

这是文本编辑的代码:

func addText() 
    let textView = UITextView(frame: CGRect(origin: CGPoint.zero, size: CGSize(width: bounds.width * 0.75, height: bounds.height * 0.75)))
    textView.center = shapeView.center
    textView.delegate = self
    textView.font = .systemFont(ofSize: 32)
    shapeView.addSubview(textView)
    imageButton.removeFromSuperview()
    textButton.removeFromSuperview()


func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool 
    if text == "\n" 
        textView.resignFirstResponder()
        return false
    
    return true

谁能告诉我为什么视图会自动滚动以及如何禁用它?

【问题讨论】:

你在 textView 委托函数中有什么代码? @Sam 我添加了所有功能 @BrightFuture 你到底想做什么?您是否在 tableCell 中使用 UITextView 并尝试在其中写入。? @dahiya_boy 是的,我在集合视图单元格中添加文本并将这些文本保存到核心数据中 @BrightFuture 如果您有情节提要,那么为什么不从情节提要中添加 textView 而不是调用 addText。因为很容易从情节提要中维护组件。 【参考方案1】:

我发现了问题,奇怪的是,这是因为集合视图的尺寸特别大,正如您在添加的屏幕截图中看到的那样,它大于 iPhone 和 iPad 的屏幕宽度。

虽然我仍然不知道为什么会发生这种情况,但我通过将前导和尾随约束设置为view 的边缘来解决问题,而不是设置固定宽度。

感谢大家的回答!

【讨论】:

经过数小时的搜索,最终得到了答案。我在 Apple TV 上的收藏视图中滚动时遇到了同样的问题,不敢相信还没有对此表示赞同,因为答案是自 2017 年以来发布的。感谢您的帮助!

以上是关于编辑另一个单元格时,集合视图会自动跳转到第一个单元格的主要内容,如果未能解决你的问题,请参考以下文章

使用单元格中的按钮转到详细视图控制器

滚动和拖动单元格时集合视图抛出异常

如何在集合视图中单击单元格时创建按钮操作

使用两种不同类型的单元格时如何确定集合视图的大小

为啥当我在同一行中编辑另一个单元格时,此数据表单元格会恢复为旧值?

自动布局和集合视图问题