在输入值时点击键盘的返回键在iOS 8UIAlertViewStyleSecureTextInput
中UIAlertView
触发调用alertView:clickedButtonAtIndex:
UIAlertViewDelegate
在 iOS 7UIAlertViewDelegate
中,相同的条件下不会触发相同的呼叫。
我不确定这是否是iOS 8 or iOS 7
. 但是我的代码按照预期 iOS 8 停止运行。
代码示例:
#include "MPAMyViewController.h"
static NSString *MPAPasswordConfirmationAlertTitle = @"Please confirm your password.";
static NSString *MPAPasswordConfirmationAlertCancelButtonTitle = @"Cancel";
static NSString *MPAPasswordConfirmationAlertOkButtonTitle = @"OK";
static NSString *MPAPasswordConfirmationTextFieldPlaceholder = @"Enter Password";
@interface MPAMyViewController () <UIAlertViewDelegate, UITextFieldDelegate>
@property (strong, nonatomic) NSString *errorFromRequest;
@property (strong, nonatomic) UIAlertView *passwordAlertView;
- (void)processRequest:(UITextField *)passwordTextField;
@end
@implementation MPAMyViewController
- (IBAction)showPasswordConfirmationAlert:(id)sender {
self.passwordAlertView = [[UIAlertView alloc] initWithTitle:MPAPasswordConfirmationAlertTitle
message:self.errorFromRequest
delegate:self
cancelButtonTitle:MPAPasswordConfirmationAlertCancelButtonTitle
otherButtonTitles:MPAPasswordConfirmationAlertOkButtonTitle, nil];
self.passwordAlertView.alertViewStyle = UIAlertViewStyleSecureTextInput;
UITextField *passwordTextField = [self.passwordAlertView textFieldAtIndex:0];
[passwordTextField becomeFirstResponder];
passwordTextField.placeholder = MPAPasswordConfirmationTextFieldPlaceholder;
passwordTextField.delegate = self;
[self.passwordAlertView show];
}
#pragma mark - UIAlertViewDelegate
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:MPAPasswordConfirmationAlertOkButtonTitle]) {
UITextField *passwordTextField = [alertView textFieldAtIndex:0];
[self processRequest:passwordTextField];
}
}
#pragma mark - TextField Delegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[self.passwordAlertView dismissWithClickedButtonIndex:self.passwordAlertView.firstOtherButtonIndex animated:YES];
return YES;
}
- (void)processRequest:(UITextField *)passwordTextField {
NSString *password = passwordTextField.text;
// CODE: send request
}
@end