У меня есть сценарий, как, в первой установке приложения, пользователь должен просматривать UIAlertViewController
с UITextField
, пользователь должен ввести электронный идентификатор, если это действительно уволить UIAlertViewController
, еще не отклоняя что UIAlertViewController
нужно подсказывать другое UIAlertViewController
Высказывание «Введите действительный идентификатор электронной почты», как это сделать?AlertView с TextField в DidFinishLaunchingWithOptions
ответ
Добавить некоторую логику для вашего didFinishLaunchingWithOptions.
Здесь Сценарий заключается в том, что он будет первым prsent Alert say Введите свой адрес электронной почты. При вводе электронной почты и нажмите «ОК», проверьте, действительно ли электронная почта действительна или нет. , если он не действителен, присутствует другое сообщение, отображающее ваше электронное письмо. пока что ваше первое предупреждение будет отклонено в то время. когда вы снова нажмете OK из AlertError. Опять же, он отобразит AlertController вашего текстового поля электронной почты.
-(void)Alert{
UIAlertController * alertController = [UIAlertController alertControllerWithTitle: @"Your Email" message: @"Enter Your Email"preferredStyle:UIAlertControllerStyleAlert];
[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
textField.placeholder = @"E-mail";
textField.textColor = [UIColor blueColor];
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
textField.borderStyle = UITextBorderStyleRoundedRect;
}];
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
NSArray * textfields = alertController.textFields;
UITextField * Email = textfields[0];
if ([self validateEmailWithString:Email.text]) {
}else{
UIAlertController *alertError = [UIAlertController alertControllerWithTitle:@"Error" message:nil preferredStyle:UIAlertControllerStyleAlert];
[alertError addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action)
{
[self dismissViewControllerAnimated:YES completion:nil];
[self presentViewController:alertController animated:YES completion:nil];
}]];
[self presentViewController:alertError animated:YES completion:nil];
}
}]];
[self presentViewController:alertController animated:YES completion:nil];
}
- (BOOL)validateEmailWithString:(NSString*)checkString
{
BOOL stricterFilter = NO;
NSString *stricterFilterString = @"[A-Z0-9a-z\\._%+-][email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}";
NSString *laxString = @"[email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*";
NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:checkString];
}
Это будет работать идеально для вас.
Теперь, если есть ошибка снова присутствует оповещение по электронной почте.
Отличная работа @Narendra Pandey, это сработало, спасибо. – Ganesh
Пожалуйста, напишите об этом в AppDelegate.m.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title"
message:@"Message"
delegate:self
cancelButtonTitle:@"Done"
otherButtonTitles:nil];
alert.tag = 1000;
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
return YES;
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (alertView.tag == 1000) {
NSLog(@"%@", [alertView textFieldAtIndex:0].text);
NSString *str = [alertView textFieldAtIndex:0].text;
if ([str isEqualToString:@"your string"]) {
//do what ever you want.
}else{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wrong Email"
message:@"Please try again"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
alert.tag = 1001;
[alert show];
}
}
}
Добавить делегат для UIActionSheet и TextField в AppDelegate.h
в
@interface AppDelegate : UIResponder <UIApplicationDelegate, UIActionSheetDelegate>
Добавить делегат для UIActionSheet и TextField в AppDelegate в качестве первой проверки ИДК пользователь открывает приложение для того времени. Для Делая это, вы можете вы можете использовать этот код в методе AppDelegate's
applicationDidFinishLaunching
:
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
[[NSUserDefaults standardUserDefaults] synchronize];
//Now set up an alertView with textField:
UIAlertView *alertView1 = [[UIAlertView alloc] initWithTitle:@"ALERT!!!" message:@“Enter Email ID” delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
alertView1.alertViewStyle = UIAlertViewStyleSecureTextInput;
self.passwordField = [alertView1 textFieldAtIndex:0];
[alertView1 setTag:10003];
self.passwordField.keyboardType=UIKeyboardTypeAlphabet;
[alertView1 show];
}
}
Теперь создан метод делегата для alertView как:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if(alertView.tag == 10003) {
if (buttonIndex==1) {
[self.passwordField resignFirstResponder];
NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
if ([emailTest evaluateWithObject:email])
{
//Do nothing
}
else {
//Show alert View for failed case
UIAlertView *al = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Please Enter Valid Email" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[al show];
al.tag = 10004;
}
}
но почему вы хотите в DidFinishLaunching –
Потому что это должно быть как один раз появляться при первой установке @NarendraPandey – Ganesh