You can achieve this by subclassing UIWebView
and overriding canPerformAction
(Swift 3). Then, all you need to do is return false
for whichever actions you want disabled.
Example:
class EditedUIMenuWebView: UIWebView {
override func canPerformAction(_ action: Selector, withSender sender: AnyObject?) -> Bool {
if action == #selector(cut(_:)) {
return false
}
if action == #selector(paste(_:)) {
return false
}
if action == #selector(select(_:)) {
return false
}
if action == #selector(selectAll(_:)) {
return false
}
...
return super.canPerformAction(action, withSender: sender)
}
}
If you have any questions please ask!
Edit If you want to disable all actions but a few it may be easier to just return false
in canPerformAction
and return true
for the ones you want like so:
override func canPerformAction(_ action: Selector, withSender sender: AnyObject?) -> Bool {
if action == #selector(copy(_:)) || action == #selector(customMethod(_:)) {
return true
}
...
return false
}