it-swarm.com.de

iOS 8: UIAlertView/UIAlertController zeigt keinen Text oder Schaltflächen an

Ich habe ein UIAlertView, das in iOS 7 perfekt angezeigt wird, aber in iOS 8 werden keine Schaltflächen oder Beschriftungen angezeigt. Der Alarm ist immer noch sichtbar, aber nur ein kleines weißes Kästchen .. Die OK- und Abbrechen-Schaltflächen nehmen ihre Ereignisse ebenfalls vor, jedoch sind keine Texte sichtbar.

Ich habe diese Warnmeldung verwendet, um beim Klicken auf eine Schaltfläche anzuzeigen

- (IBAction)sel_btnLogout:(id)sender {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Logout!" message:@"Are you sure you want to logout?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Ok", nil];
    [alert show];
}

Ich habe den Rahmen in iOS 8 überprüft: Er gibt (0,0,0,0), aber in iOS 7 gibt er einen definitiven Wert an.

Ich habe auch nach Iterationen in den Subviews von uialertview gesucht. In iOS7 läuft es in der Schleife, da es die Unteransichten von Alerts findet. In iOS8 heißt es, es gibt keine Unteransichten von alertView.

11
Siddhant

Ich habe die Antwort auf meine Frage bekommen. Das Problem war, dass ich in meinem Projekt die Kategorie UIFont + Replacement verwendete. Dies funktionierte gut unter iOS 7, aber unter iOS 8 wurden nur wenige veraltete Methoden verwendet. Aus diesem Grund weiß ich nicht warum, aber nur meine Warnungsansicht zeigte keine Labels.

Lösung: Die Kategorie wurde aus dem Projekt gelöscht und die Schriftart über Xib festgelegt. Sobald wir die .tff-Datei einer beliebigen Schriftart in unserem Projektarbeitsbereich platziert haben, werden diese Namen in der Xib unter benutzerdefinierten Schriftarten angezeigt. KEINE NOTWENDIGKEIT, UIFont + Replacement-Kategorie zu verwenden.  

4
Siddhant

Prüfen Sie, ob die Klasse verfügbar ist

if ([UIAlertController class])
{

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert title" message:@"Alert message" preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];
    [alertController addAction:ok];

    [self presentViewController:alertController animated:YES completion:nil];

} 
else 
{

    UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"Alert title" message:@"Alert message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

    [alert show];

}
29
Vijay yadav

Bei iOS 8 können Sie anstelle der Nachricht den Titel festlegen:

[[[UIAlertView alloc] initWithTitle:@"AlertView in iOS 8." message:nil delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]show];

UIAlertView ist ab iOS 8 veraltet. Weitere Informationen finden Sie hier

http://nshipster.com/uialertcontroller/ . https://developer.Apple.com/LIBRARY/IOS/documentation/UIKit/Reference/UIAlertViewDelegate_Protocol/index.html

Wenn Sie also separaten Code für iOS 7 und iOS 8 schreiben, sollten Sie stattdessen UIAlertController verwenden: 

UIAlertController *alertController = [UIAlertController  alertControllerWithTitle:@"AlertView in iOS 8"  message:nil  preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
 [self dismissViewControllerAnimated:YES completion:nil];
}]];
[self presentViewController:alertController animated:YES completion:nil];
12
Ricky

Bitte lesen Sie den folgenden Code, um zu erfahren, wie Sie die Felder und Schaltflächen zu den Benachrichtigungen hinzufügen.

- (IBAction)UIAlertControllerWithActionSheetTextFields:(id)sender {
    UIAlertController * alert=   [UIAlertController
                                  alertControllerWithTitle:@"Info"
                                  message:@"You are using UIAlertController with Actionsheet and text fields"
                                  preferredStyle:UIAlertControllerStyleAlert];
    
    UIAlertAction* ok = [UIAlertAction
                         actionWithTitle:@"OK"
                         style:UIAlertActionStyleDefault
                         handler:^(UIAlertAction * action)
                         {
                             NSLog(@"Resolving UIAlert Action for tapping OK Button");
                             [alert dismissViewControllerAnimated:YES completion:nil];
                             
                         }];
    UIAlertAction* cancel = [UIAlertAction
                             actionWithTitle:@"Cancel"
                             style:UIAlertActionStyleDefault
                             handler:^(UIAlertAction * action)
                             {
                                 NSLog(@"Resolving UIAlertActionController for tapping cancel button");
                                 [alert dismissViewControllerAnimated:YES completion:nil];
                                 
                             }];
    
    [alert addAction:ok];
    [alert addAction:cancel];
    
    [alert addTextFieldWithConfigurationHandler:^(UITextField * textField) {
       textField.accessibilityIdentifier = @"usernameTextField";
        textField.placeholder = @"Enter your username";
        textField.accessibilityLabel = @"usernameLabel";
    }];
    
    [alert addTextFieldWithConfigurationHandler:^(UITextField * textField) {
       textField.placeholder = @"Enter your password";
       textField.accessibilityIdentifier = @"paswordTextField";
       textField.accessibilityLabel = @"passwordLabel";
    }];
    
    [self presentViewController:alert animated:YES completion:nil];
    
}

wenn Sie ein Projekt benötigen, um vollständig auf die in IOS verfügbaren Alerttypen zu verweisen, folgen Sie meinem Projekt unter der folgenden URL:

Alert-Variationen in IOS

3
DILIP KOSURI

in iOS 8 müssen Sie UIAletrview und UIActionSheet durch UIAlertcontroller ersetzen. Sie haben zuerst diese Dokumentation im Apple-Forum gelesen 
Apple Alertcontroller

2
Apple Insider

Sie können diesen Code überprüfen

if (([[[UIDevice currentDevice] systemVersion] compare:@"8.0" options:NSNumericSearch] == NSOrderedAscending))
{
    // use UIAlertView
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:Title message:desc delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [alert show];
}
else {
    // use UIAlertController
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:Title message:desc preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

    }];
    [alert addAction:okAction];
    [self presentViewController:alert animated:YES completion:nil];
}
1
saraman
let alert = UIAlertController(title: "Warning" as String , message: messageString as String, preferredStyle: .Alert)
        let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default)
        {
            UIAlertAction in
                self.dismissViewControllerAnimated(true, completion: nil)
        }
        // Add the actions
        alert.addAction(okAction)
        self.presentViewController(alert, animated: true, completion: nil)
0
Nrv