AHAlertView 0.0.2

AHAlertView 0.0.2

LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Mar 2015

Maintained by Unclaimed.

  • By
  • Warren Moore


AHAlertView is a powerful, block-based alternative to UIKit's UIAlertView. It has the following attractive features:

  1. Block-based button events - no more messy delegate code
  2. UIAppearance conformance to allow easy skinning of all elements
  3. Dramatic presentation and dismissal animations (tumble, fade, zoom, etc.)

Usage Examples

Showing an alert is as simple as creating an alert, adding a button, and calling show:

AHAlertView *alert = [[AHAlertView alloc] initWithTitle:@"Hello, World!" message:@"I'm an alert view!"];
[alert setCancelButtonTitle:@"Dismiss" block:nil];
[alert show];

If a total of two buttons are added, the alert view will lay them out side-by-side:

Two button side-by-side layout example

AHAlertView *alert = [[AHAlertView alloc] initWithTitle:@"Enter Password" message:@"This is a message that might prompt you to do something."];
[alert setCancelButtonTitle:@"Cancel" block:nil];
[alert addButtonWithTitle:@"OK" block:nil];
[alert show];

You can use an alert view to prompt for user input, including secure text for password fields, etc.:

Secure text entry example

AHAlertView *alert = [[AHAlertView alloc] initWithTitle:@"Enter Password" message:@"[email protected]"];
alert.alertViewStyle = AHAlertViewStyleSecureTextInput;
[alert setCancelButtonTitle:@"Cancel" block:^{
    NSLog(@"User canceled the alert instead of entering their password.");
[alert addButtonWithTitle:@"OK" block:^{
    NSLog(@"User entered the password: %@", [alert textFieldAtIndex:0].text);
[alert show];

You can use the block you pass in with the button title to perform any action, including setting a custom dismissal animation based on which button was touched:

Custom theme and animation example

[alert setCancelButtonTitle:@"Cancel" block:^{
    alert.dismissalStyle = AHAlertViewDismissalStyleTumble;


  • I think we can all agree a little more documentation would be nice.
  • Indeterminate progress style, possibly a determinate one as well.
  • Better button layout code