Obserwujemy nietypowe zachowanie w odniesieniu do klawiatury. Po wyświetleniu ostrzeżenia & zostanie ukryte powiadomienie w systemie iOS 8.3.Powiadomienia klawiatury systemu iOS zostały niepotrzebnie uruchomione po wyświetleniu alertów na urządzeniach z systemem iOS 8.3
ViewControler (listenig to keyboard notifications) ma textfiled i po kliknięciu i po stuknięciu przycisku submit, metoda najpierw rezygnuje z pierwszej odpowiedzi z pola tekstowego i pokazuje ostrzeżenie informujące o ostrzeżeniu. Wszystko działa dobrze, odrzuca klawiaturę i wyświetla alert zgodnie z oczekiwaniami. (wywołuje również metodę UIKeyboardWillHideNotification).
Jednak po 8, po dotknięciu OK/Cancel na delegacie Alertview, odrzuca alert i wywołuje UIKeyboardWillShowNotification odpowiednio & UIKeyboardWillHideNotification, chociaż nie powinno się go nazywać! Tego się nie spodziewano, ponieważ klawiatura została już zwolniona przed przeniesieniem alarmu!
Oto fragment kodu, który staramy:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
}
- (IBAction)ShowAlert:(id)sender {
[self.TxtField resignFirstResponder];
//This woudln't make any diff either :(
[self.view endEditing:YES];
[self ShowAlertForTest];
}
-(void)ShowAlertForTest{
UIAlertView *theAlertView= [[UIAlertView alloc]initWithTitle:@"Title"
message:@"msg"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"Yes", nil];
[theAlertView show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"buttonIndex = %ld",buttonIndex);
}
- (void)keyboardWillShow:(NSNotification *)aNotification
{
NSLog(@"keyboardWillShow");
}
- (void)keyboardWillHide:(NSNotification *)aNotification
{
NSLog(@"keyboardWillHide");
}
Takie zachowanie jest przyczyną problemów w naszej aplikacji, gdy nie są kaskadowe alarmy wywoływane z poprzedniego alertview'd delegata - wychowywanie klawiatura w niepotrzebnych sytuacjach.
Każda pomoc/porady są mile widziane!
Czy trzeba do obsługi wersji niższych niż 8? W przeciwnym razie, UIAlertView jest przestarzałe i możesz mieć większy sukces z [UIAlertController] (https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIAlertController_class/) – Yaser
Tak @Yaser, wspieramy iOS7 także! – My3