在UIWebView中拦截粘贴操作(Swift)
在粘贴内容之前,Swift有没有办法获取粘贴的内容?理想情况下,当用户从可编辑元素的默认弹出式菜单中选择“粘贴”时,我应该读取要粘贴的内容。现在我正在查看带有内容可编辑div的UIWebView。在UIWebView中拦截粘贴操作(Swift)
代码我迄今(由朱利的回答启发)
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: _lookup: _define: _addShortcut: _accessibilitySpeak: _accessibilitySpeakLanguageSelection: _accessibilityPauseSpeaking: _share: makeTextWritingDirectionRightToLeft: makeTextWritingDirectionLeftToRight:
Eventhough粘贴选择没有列在这里它,在弹出的菜单中。
你应该重写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类
谢谢你。请参阅最新的问题。似乎还没有工作。对不起,忘了提及我正在查看UIWebView。 –
我从来没有尝试,但这应该与UIWebView工作。扩展UIWebView而不是UITextField – Ludovic
Objec你可以粘贴的内容略去ç
CLS_LOG(@"copied test %@",[[UIPasteboard generalPasteboard] string]);
斯威夫特
print("String is \(UIPasteboard.general.string)")
我应该在哪里放置这段代码?我什么时候才能知道普通粘贴板复制了内容? –
我想你可以只读取并显示在用户做任何事情之前,有些类似于浏览器的应用程序,不知道拦截行动,也许拦截出现textfield文本是更好的主意 – Tj3n
你的意思是粘贴内容在'UITextField'或'UITextView'? – KrishnaCA