Fallstricke von iOS UIAlertController

Bei der Initialisierung von UIAlertController gibt es zwei bevorzugte Stile:

Geben Sie 1 UIAlertControllerStyleAlert ein

Typ 2 UIAlertControllerStyleActionSheet

Es wird empfohlen, Typ 1 zu verwenden, weil:

1. Der erste Typ hat auf dem iPhone und dem iPad die gleiche Anzeigeform: Ein Dialogfeld wird in der Mitte des Bildschirms angezeigt, während der zweite Typ ein Dialogfeld am unteren Bildschirmrand auf dem iPhone und dem iPad anzeigt , wird ein Dialogfeld basierend auf der angegebenen Quellansicht angezeigt. Ein Dialogfeld in Form einer „Blase“, und wenn viele Schaltflächen vorhanden sind, können nur die ersten 1 oder 2 Schaltflächen angezeigt werden.

2. Das Wichtigste ist, dass der zweite Typ bei unsachgemäßer Verwendung auf dem iPad abstürzt.

UIPopoverPresentationController *popOver = [alert popoverPresentationController];
    // 如果不加这两句,iPad点击混合UITableView页的条目时会崩溃
    // 遗留问题:如果UIAlertAction较多,显示不全
    popOver.sourceView = vc.view; //下拉式对话框 弹出的位置
    popOver.sourceRect = vc.view.bounds;

    // 如果不加这两句,iPad点击纯UITableView页的条目不弹出对话框
    // 遗留问题:如果UIAlertAction较多,显示不全
    popOver.barButtonItem = vc.navigationItem.leftBarButtonItem;
    popOver.permittedArrowDirections = UIPopoverArrowDirectionAny;

Der obige Code muss vor der Ausführung von [vc presentViewController:alert animiert: YES abgeschlossen: nil ]; hinzugefügt werden. Es hängt auch mit dem Layout der Seite zusammen. Zum Beispiel der obige Codekommentar: Die Seite ist nicht-UITableView (nicht getestet), reine UITableView, gemischte UITableView (das heißt, UITableView ist nur ein Teil des Seitenlayouts). . In meinem Beispiel gibt es mehrere Schaltflächen über der UITableView.

Solange der PreferredStyle von UIAlertController auf UIAlertControllerStyleAlert gesetzt ist, können diese Codes verworfen werden.

Supongo que te gusta

Origin blog.csdn.net/piggy514/article/details/132488744
Recomendado
Clasificación