Swift中有没有办法在粘贴之前获取粘贴的内容?理想情况下,当用户选择“粘贴”时,我应该阅读要粘贴的内容。从可编辑元素的默认弹出菜单中。现在我正在看一个带有内容可编辑div的UIWebView。
我到目前为止的代码(灵感来自Ludovic的答案)
class myWebView: UIWebView {
override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
print(action)
return super.canPerformAction(action, withSender: sender)
}
}
输出(每次点击内容可编辑div时):
切: 复制: 选择: 全选: 删除: _promptForReplace: _transliterateChinese: _showTextStyleOptions: _抬头: _限定: _addShortcut: _accessibilitySpeak: _accessibilitySpeakLanguageSelection: _accessibilityPauseSpeaking: _分享: makeTextWritingDirectionRightToLeft: makeTextWritingDirectionLeftToRight:
尽管此处未列出粘贴选择器,但它在弹出菜单中可用。
答案 0 :(得分:0)
您应该覆盖canPerformAction
方法以捕捉操作
override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
if action == #selector(paste(_:)) {
// Do something
return false // Will disable paste action
}
return super.canPerformAction(action, withSender: sender)
}
您可以扩展所有UITextField以在您的应用中的任何位置使用此功能,或创建自定义CatchPasteTextField以仅为给定的UITextField类提供此功能
答案 1 :(得分:0)
您可以在粘贴为
之前获取粘贴的内容let pasteboardString: String? = UIPasteboard.general.string
if let theString = pasteboardString {
print("String is \(theString)")
}
答案 2 :(得分:0)
目标C
CLS_LOG(@"copied test %@",[[UIPasteboard generalPasteboard] string]);
<强>夫特强>
print("String is \(UIPasteboard.general.string)")