Во время разговоров по поводу возвращения ключа клавиатуры при вводе значения в UIAlertViewStyleSecureTextInput
в виде UIAlertView
является запуском вызова alertView:clickedButtonAtIndex:
UIAlertViewDelegate
в прошивке 8Проблемы с отводом через клавишу возврата клавиатуры для полевой прошивки UIAlertViewStyleSecureTextInput UIAlertView в 8
В прошивке 7 же UIAlertViewDelegate
WASN вызовов не срабатывает в тех же условиях.
Я не уверен, что это проблема в 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
Спасибо за быстрый ответ. UIAlertController не имеет никакого значения. Указанный делегат alertView: clickedButtonAtIndex по-прежнему вызывает вызов. Даже я должен сделать это условным, потому что UIAlertController не будет работать для iOS 7. – satish