检测用户是否从文本字段复制文本
Detect if user copied text from textfield
我想使用用户从我的应用程序文本字段中复制的词。
我找到了这段代码:
NotificationCenter.default.addObserver(self, selector: #selector(clipboardChanged), name: UIPasteboard.changedNotification, object: nil)
但是 'clipboardChanged' 从文本字段复制文本时没有调用函数。
我用Swift4.2
这段代码对我来说工作得很好:
override func copy(_ sender: Any?) {
super.copy()
}
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(clipboardChanged), name: UIPasteboard.changedNotification, object: nil)
}
@objc func clipboardChanged(){
print("Cut/Copy Performed")
}
复制通知有多种实现方式
1。 UIMenuController
显示一个菜单,其中包含复制、剪切、粘贴、Select 和 Select 选择上方或下方的所有命令。
参考:
https://developer.apple.com/documentation/uikit/uimenucontroller
https://nshipster.com/uimenucontroller/
2。 UIResponderStandardEditActions 协议
响应者实现在这个非正式协议中声明的方法来处理选择的菜单命令(例如,copy:
和 paste:
)。因为你的 UIViewController
继承自 UIResponder
确实符合 UIResponderStandardEditActions
,所以它会给你错误说 Redundant conformance
。所以直接实现你需要的方法即可。
参考:https://developer.apple.com/documentation/uikit/uiresponderstandardeditactions
3。 UIPasteboard changedNotification
class let changedNotification: NSNotification.Name
这发生在粘贴板的更改计数 (changeCount 属性) 递增的同时。更改包括粘贴板项目的添加、删除和修改。
参考:https://developer.apple.com/documentation/uikit/uipasteboard
我想使用用户从我的应用程序文本字段中复制的词。
我找到了这段代码:
NotificationCenter.default.addObserver(self, selector: #selector(clipboardChanged), name: UIPasteboard.changedNotification, object: nil)
但是 'clipboardChanged' 从文本字段复制文本时没有调用函数。
我用Swift4.2
这段代码对我来说工作得很好:
override func copy(_ sender: Any?) {
super.copy()
}
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(clipboardChanged), name: UIPasteboard.changedNotification, object: nil)
}
@objc func clipboardChanged(){
print("Cut/Copy Performed")
}
复制通知有多种实现方式
1。 UIMenuController
显示一个菜单,其中包含复制、剪切、粘贴、Select 和 Select 选择上方或下方的所有命令。
参考:
https://developer.apple.com/documentation/uikit/uimenucontroller
https://nshipster.com/uimenucontroller/
2。 UIResponderStandardEditActions 协议
响应者实现在这个非正式协议中声明的方法来处理选择的菜单命令(例如,copy:
和 paste:
)。因为你的 UIViewController
继承自 UIResponder
确实符合 UIResponderStandardEditActions
,所以它会给你错误说 Redundant conformance
。所以直接实现你需要的方法即可。
参考:https://developer.apple.com/documentation/uikit/uiresponderstandardeditactions
3。 UIPasteboard changedNotification
class let changedNotification: NSNotification.Name
这发生在粘贴板的更改计数 (changeCount 属性) 递增的同时。更改包括粘贴板项目的添加、删除和修改。
参考:https://developer.apple.com/documentation/uikit/uipasteboard