Можем ли мы отключить параметры копирования / вставки Textfield в SwiftUI? - PullRequest
0 голосов
/ 10 февраля 2020

Я хочу отключить опцию копирования / вставки из моего текстового поля в SwiftUI. Как этого добиться?

1 Ответ

0 голосов
/ 10 февраля 2020

Используйте класс UIViewRepresentable, чтобы создать класс-оболочку следующим образом.

import SwiftUI

struct CustomeTextField: View {

    @State var textStr = ""


    var body: some View {
        VStack(spacing: 10) {
            Text("This is textfield:")
                .font(.body)
                .foregroundColor(.gray)

            TextFieldWrapperView(text: self.$textStr)
                .background(Color.gray)
                .frame(width: 200, height: 50)
        }
        .frame(height: 40)
    }
}


struct TextFieldWrapperView: UIViewRepresentable {

    @Binding var text: String

    func makeCoordinator() -> TFCoordinator {
        TFCoordinator(self)
    }
}

extension TextFieldWrapperView {


    func makeUIView(context: UIViewRepresentableContext<TextFieldWrapperView>) -> UITextField {
        let textField = UITextField()
        textField.delegate = context.coordinator
        return textField
    }


    func updateUIView(_ uiView: UITextField, context: Context) {

    }
}

class TFCoordinator: NSObject, UITextFieldDelegate {
    var parent: TextFieldWrapperView

    init(_ textField: TextFieldWrapperView) {
        self.parent = textField
    }

    func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
        if action == #selector(UIResponderStandardEditActions.paste(_:)) {
            return false
        }
        return canPerformAction(action: action, withSender: sender)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...