ios - 如何在 Swift 5 中限制 iOS App 的文本文件中的复制粘贴?
问题描述
在我的应用程序中,我试图限制从文本文件中复制和粘贴。在 Swift5 中有没有默认/更好的方法来做到这一点?
尝试使用以下代码但无法正常工作
var key: Void?
class UITextFieldAdditions: NSObject {
var readonly: Bool = false
}
extension UITextField {
var readonly: Bool {
get {
return self.getAdditions().readonly
} set {
self.getAdditions().readonly = newValue
}
}
private func getAdditions() -> UITextFieldAdditions {
var additions = objc_getAssociatedObject(self, &key) as? UITextFieldAdditions
if additions == nil {
additions = UITextFieldAdditions()
objc_setAssociatedObject(self, &key, additions!, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN)
}
return additions!
}
open override func target(forAction action: Selector, withSender sender: Any?) -> Any? {
if ((action == #selector(UIResponderStandardEditActions.paste(_:)) || (action == #selector(UIResponderStandardEditActions.cut(_:)))) && self.readonly) {
return nil
}
return super.target(forAction: action, withSender: sender)
}
}
解决方案
您可以编写一个扩展来UITextField
隐藏复制和粘贴操作:
extension UITextField {
override open func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
return (action == #selector(UIResponderStandardEditActions.copy(_:))
|| action == #selector(UIResponderStandardEditActions.paste(_:))) ?
false : super.canPerformAction(action, withSender: sender)
}
}
推荐阅读
- github - 其他人 Github 回购显示在我的个人资料中
- python - 我的课不工作,它忽略了变量
- windows - Docker Build COPY Pipfile Pipfile.lock 缓存键错误
- python - 使用控制器的 Tkinter 交叉引用类和变量?
- python - 根据另一个数据框中具有最小值/最大值的列从熊猫数据框中选择值
- python - 弹性搜索连接
- reactjs - 使用 reactstrap 切换手风琴功能?
- azure - 尝试运行 Get-AzStorageBlob 时出错
- r - 收到“不允许从闪亮输出对象读取”。运行代码时出错?
- javascript - 在 CSS 中单击按钮时触发水动画