【问题标题】:How to disable Dragging in UITextView in iOS 11如何在 iOS 11 中禁用 UITextView 中的拖动
【发布时间】:2018-05-14 12:52:09
【问题描述】:

我在 UITableview 中使用 UITextview 并通过复制和链接检测进行选择。拖放工作无需在 UITextview 上实现拖放功能。所以我想禁用 UITextView 拖放...

【问题讨论】:

标签: ios swift drag-and-drop uitextview


【解决方案1】:

要禁用文本拖动(文本“弹出”并且可以在屏幕上拖动),请尝试以下操作:

if #available(iOS 11.0, *) { 
    textView.textDragInteraction?.isEnabled = false 
}

【讨论】:

  • 当有人掉入文本字段时我们如何禁用? textDropInteraction 不起作用...
【解决方案2】:

我遇到了类似的问题,并找到了适合我的解决方案。

所以,我在每个单元格内都有一个 TableView 和一个 TextView。我想为TableView 启用拖放功能,以便能够移动单元格。但是当我长按一个单元格时,我实际上是按了它的TextView,也开始了它的拖动会话。每当我试图将该单元格移动到TableView 中的新位置时,该应用程序就会尝试将该单元格的TextView 中的文本插入到新单元格的TextView 中,执行“拖放文本复制操作”。

要禁用此类交互,您可以尝试以下操作:

  1. 为您的 UITableViewCell 对象创建一个扩展名(在 YourTableViewCell.swift 文件中,链接到 YourTableViewCell.xib):
extension YourTableViewCell: UITextDropDelegate {
  func textDroppableView(_ textDroppableView: UIView & UITextDroppable, proposalForDrop drop: UITextDropRequest) -> UITextDropProposal {
    return UITextDropProposal(operation: .cancel)
  }
}
  1. 使YourTableViewCell 成为TextView 的放置委托(也在YourTableViewCell.swift 中)
override func awakeFromNib() {
  super.awakeFromNib()
  YourTextView.textDropDelegate = self
}

YourTextView 是单元格文本视图的出口

这将帮助您的应用停止尝试在您的 UITextView 中插入文本 TableView
希望它可以帮助某人。

【讨论】:

    【解决方案3】:

    禁用 UITextview 和 UITextfield drop:

    textView.removeInteraction(textView.textDropInteraction!)
    

    【讨论】:

      【解决方案4】:

      对于那些想要禁用放置交互的人,请查看以下几行,

      
      print(noteView.interactions) // you will find a drop interaction here
      textView.interactions.removeAll(where: { $0 is UIDropInteraction })
      print(noteView.interactions) // it's gone
      
      

      同样,拖放交互都可以像那样被禁用/删除

      textView.interactions.removeAll(where: { $0 is UIDropInteraction
                                            || $0 is UIDragInteraction })
      
      
      

      【讨论】:

        【解决方案5】:

        嘿,我尝试了一个更简单的解决方案,似乎可行:

        if #available(iOS 11.0, *) {      
            myTextView.textDropDelegate=nil
        }
        

        所以现在,当我在这个区域放置一个图像时,我可以将它作为一个图像处理,而不是作为路径的文本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-14
          • 2017-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-12
          相关资源
          最近更新 更多