Whether tapping interface elements or using the keyboard, inputting information can be a tedious process. When an app slows down the process by asking for lots of input before doing anything useful, people can get discouraged quickly, and may even abandon the app entirely.
When possible, present choices. Make data entry as efficient as possible. Consider using a picker or table instead of a text field, for example, because it’s easier to choose from a list of predefined options than to type a response.
Get information from the system whenever possible. Don’t force people to provide information that can be gathered automatically or with the user's permission, such as contact or calendar information.
Provide reasonable default values. To the extent possible, prefill fields with the most likely values. Providing good defaults minimizes decision making and speeds up the process.
Enable advancement only after collecting required values. Before enabling a Next or Continue button, make sure all required fields have values. Use the enablement of the button as a visual cue that it’s time to proceed.
Dynamically validate field values. It’s frustrating when you have to go back and correct mistakes after filling out a lengthy form. Whenever possible, check field values immediately after entry so users can correct them right away.
Require field values only when necessary. Use required fields only for information that is truly necessary to proceed.
Ease navigation through value lists. Especially in tables and pickers, it should be easy to pick a value. Consider sorting value lists alphabetically or in another logical manner that facilitates speedy scanning and selection.
Show a hint in a text field to help communicate purpose. A text field can contain placeholder text—such as "Email" or "Password"—when there’s no other text in the field. Don’t use a separate label to describe a text field when placeholder text is sufficient.