I've gone over Apple's Human Interface Guidelines and I think I've got a firm grasp when a UIAlertView should and shouldn't be used. Although I also wanted to get some feedback from other app developers about when they've found it best to use a custom UIView aligned with the design of the app, or a UIAlertView. I just feel like that using the UIAlert view is just somewhat of a cop-out for user experience. Thoughts?
Whilst they do have their uses, I don't really like UIAlertView:
They all look exactly the same.
There's no easy way to distinguish between a 'just letting you know' message and 'this will delete all the things' message in a quick instant. It usually ends up with the user always pressing OK or similar to get back to what they were doing.
Customising the alert has advantages for this though - for instance, making the confirm button a colour that stands out from the rest of your design will usually make someone think for a few extra moments before tapping it.
Apple recommends this for Action Sheets, but the principle is the same for modal alerts:
On all devices, use red for the button that performs a potentially destructive action.
Also, swapping the location of the confirm button is also used to prevent accidental selection, and is recommended in the guides:
Place buttons appropriately. …
- When the most likely button performs a nondestructive action, it should be on the right in a two-button alert. The button that cancels this action should be on the left.
- When the most likely button performs a destructive action, it should be on the left in a two-button alert. The button that cancels this action should be on the right.
They interrupt the user.
Using modal alerts often will constantly frustrate the user, as they have to keep stopping to read the alerts. Nothing else can be performed whilst the alert is showing, and the user must make a selection. Yes, this can be useful once in a while for very important options, but using it regularly for every notification is awful. There's a reason why Apple ditched them for push notifications!
Most actions shouldn't need to be confirmed by the user. A functional 'undo' is much better.