Dodałem UITextField w UIAlertView przy użyciu UIAlertViewStylePlainTextInput. Muszę zweryfikować pole tekstowe w widoku alertu, tj. Nie powinno być puste.Sprawdzanie poprawności dla pola tekstowego dodanego w uialertview
Jak mam to zrobić?
Dodałem UITextField w UIAlertView przy użyciu UIAlertViewStylePlainTextInput. Muszę zweryfikować pole tekstowe w widoku alertu, tj. Nie powinno być puste.Sprawdzanie poprawności dla pola tekstowego dodanego w uialertview
Jak mam to zrobić?
można wywołać metodę sprawdzania poprawności z metody UIAlertViewDelegate
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
Bind zdarzenie pole tekstowe „Montaż skończyła”, lub podobne, sposobu na właściciela pliku do obsługi walidacji. Metoda ta polega na zapisaniu w pliku kontrolera.m i deklaracji w pliku controller.h. Dokładna nazwa plików kontrolera zależy od struktury bazy kodów aplikacji.
Sposób obsługi przypadku niepowodzenia sprawdzania poprawności, np. treść jest pusta, zależy od potrzeb Twojej aplikacji. Na przykład, jeśli zawartość jest pusta, należy ostrzec użytkownika, a następnie zresetować fokus do pola tekstowego.
Jeśli nie masz doświadczenia w programowaniu na iOS, przydatne mogą okazać się tutoriale Ray'a Wnderlicha. http://www.raywenderlich.com/
Znalazłem "ucznia iOS Apprentice", aby było ładnie wykonane. Pomocna może być także nowa książka Dave'a Marka "Początek iOS 5 Development".
Ustaw delegata alertView do bieżącej viewController
następnie w metodzie delegata
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)return; //for cancel button
UITextField *textField = [alertView textFieldAtIndex:0]; // since there is only one UITextField in alertView
if ([textField.text length] > 0) // checking the length of the text in UITextField
{
// Your code goes here
}
}
Mam nadzieję, że to pomaga.
BR, Hari
1: Get UITextField
w alertView:
self.alertViewTextField = [alertView textFieldAtIndex:0];
2: Sprawdź długość tekstu podczas edycji textField zmianie:
[self.alertViewTextField addTarget:self action:@selector(alertViewTextFieldDidChanged) forControlEvents:UIControlEventEditingChanged];
-(void)alertViewTextFieldDidChanged{
if(self.alertViewTextField.text.length == 0){
// ...
}
}
Załóżmy, że użytkownik posiada Przycisk "OK" (lub coś podobnego) jako pierwszy z pozostałych przycisków UIAlertView. Dalej zakładaj, że chcesz włączyć ten przycisk wtedy i tylko wtedy, gdy długość tekstu w polu tekstowym jest większa niż 0. Następnie rozwiązanie do sprawdzania poprawności jest proste. W delegat UIAlertView wdrożenia:
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
{
return [[alertView textFieldAtIndex:0].text length] > 0;
}
ten ma przewagę nad niektórymi innymi odpowiedziami (które używają clickedButtonAtIndex :), że użytkownik jest natychmiastowy świadomy, czy pole tekstowe zawiera ważny wkład.
Ten przekaz delegatów nie jest bardzo dobrze wyjaśniony w dokumentacji Apple, ale działa bardzo dobrze. Wszelkie zmiany wartości pola tekstowego spowodują wysłanie tego komunikatu, a przycisk "OK" zostanie odpowiednio włączony lub wyłączony.