Edit Menus

People can touch and hold or double-tap an element in a text field, a text view, a web view, or an image view to select content and reveal edit options, such as Copy and Paste.

Show appropriate commands for the current context. By default, the options include Cut, Copy, Paste, Select, Select All, and Delete commands, any of which can optionally be disabled. If nothing is selected, the menu shouldn’t show options that require a selection, such as Copy or Cut. Similarly, the menu shouldn’t have a Select option if something is already selected.

Let people use the standard gestures to access edit options. People expect to reveal the menu by touching and holding or double-tapping content, such as text or a photo. Your app should respond to both gestures. You can define what becomes selected when someone double-taps. In a text view, selection by word should be the default.

Adjust placement of edit options, if necessary. By default, the menu is positioned above or below the insertion point or selection, depending on available space, and includes a pointer to the related content. Although you can’t change the shape of the menu, its position is configurable—you can prevent it from covering important content or parts of your interface.

Don’t implement other controls with the same functionality as the edit menu. Providing multiple ways to initiate an operation results in an inconsistent user experience and leads to confusion. If your app lets people use the menu to copy content, for example, don’t implement a copy button too.

Allow potentially useful noneditable text to be selected and copied. People often want to add static content, such as an image label or social media status, to an email, a note, or a web search.

Don’t add edit options to a button. If you do this, people attempting to reveal the options will end up activating the button instead.

Make edit operations undoable. The menu doesn’t require confirmation before its actions are performed. Because someone could change their mind after performing an operation, always implement undo and redo support.

Expand edit options with useful custom commands. You can add value by providing additional app-specific commands. Like the standard commands, any custom commands should operate on selected text or objects.

Show custom commands after the system-provided ones. Don’t intersperse custom commands with the system-provided ones, which are well known and frequently used.

Minimize the number of custom commands. Don’t overwhelm people with too many choices.

Keep custom command names short. Command names should be verbs or short verb phrases that succinctly describe the action to be performed. Use title-style capitalization—capitalize every word except articles, coordinating conjunctions, and prepositions of four or fewer letters.

For implementation details, see Copy, Cut, and Paste Operations in Text Programming Guide for iOS and UIMenuController.