ios - TextEditor 禁用编辑

标签 ios swift swiftui

概述:

  • 我有一个使用绑定(bind)到常量的 TextEditor,因此该值不能更改。

  • 目标:
  • 我希望文本编辑器不显示键盘,但仍允许用户复制文本。

  • 问题:
  • 如何实现文本复制但不显示键盘?
  • 我更喜欢在 SwiftUI 中做,还是只能使用 UIViewRepresentable ?

  • 代码:
    import SwiftUI
    
    struct TextView: View {
        
        let text: String
        
        var body: some View {
            TextEditor(text: .constant(text))
        }
    }
    
    struct TextView_Previews: PreviewProvider {
        static var previews: some View {
            
            let text = "this is some text"
            
            TextView(text: text)
        }
    }
    

    最佳答案

    iOS 15

    yourField
      .textSelection(.enabled)
    
    iOS 14 及更低版本
    我认为现在没有很好的 swiftui 支持,考虑到它是一个常量,我可能只是手动添加复制行为:
    struct CopyableLabel : View {
        let text: String = "here's a constant"
    
        var body: some View {
            Text(text)
                .contextMenu {
                    Button(action: {
                        UIPasteboard.general.string = text
                    }) {
                        Text("Copy")
                    }
                }
        }
    }
    
    如果您希望用户能够手动选择部分,我认为最有效的方法是使用 uikit,或者滚动一些更复杂的东西

    关于ios - TextEditor 禁用编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64961293/

    相关文章:

    ios - 来回切换时锁定的 ViewController 方向中断

    ios - 如何在 iOS 14、SwiftUI 2 中以编程方式更改 PageTabView?

    swift - 将 View 提取为函数或结构?

    ios - 如何在 Objective c 中处理 TableviewCell 中的 UIButton?

    ios - 动画期间 subview 堆叠

    ios - 我的打电话功能出了什么问题

    objective-c - 界面生成器中的关键命令是什么

    ios - SwiftUI 中 $varName 和 _varName 有什么区别

    ios - 此构建无效。用于上传应用程序

    ios - Firebase map 检索纬度和经度