Swift version: 5.1
iOS has a built-in menu system that, while useful, doesn't actually get much use – because users don't expect to see it, developers don't use it, thus making it even less likely that users expect to see it.
Anyway, if you want to attach multiple actions to elements in your UI – pieces of text in a text view or web view, table view rows, and so on – you might find iOS menus are for you, so you need to turn to
UIMenuController. This has extremely simple API: you just create a
UIMenuItem object for every action you want, then register them all and wait for the user to do something.
Below is a complete example for a view controller that has a web view inside it – you'll need to create that in your storyboard. The code sets up a new menu item named "Grok" that runs the
runGrok() method when tapped. I've made it do something real: when the user selects some text, they tap Grok to have that printed out to the Xcode console.
Here's the code:
SAVE 20% ON iOS CONF SG The largest iOS conference in Southeast Asia is back in Singapore for the 5th time in January 2020, now with two days of workshops plus two days of talks on SwiftUI, Combine, GraphQL, and more! Save a massive 20% on your tickets by clicking on this link.
Available from iOS 3.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.