2016-08-09 55 views
2

In meiner iOS-Anwendung versuche ich eine einfache Datenschutzrichtlinie mit einem UIAlertController zu implementieren. Laut Gesetz muss die Richtlinie scrollbar sein, bevor sie akzeptiert werden kann - wie die meisten Datenschutzrichtlinien in diesen Tagen.Erstellen einer Datenschutzrichtlinie in Swift: So deaktivieren Sie die UIAlertController-Aktionsschaltfläche, bis die Nachricht nach unten gescrollt wird

Aus meiner eigenen Forschung habe ich gesehen, dass Sie UIAlertAction-Schaltflächen deaktivieren und aktivieren können, aber ich kann nicht identifizieren, wenn der UIAlertController-Nachrichtentext gescrollt wurde. Scrollen bis zum Ende kann eine Anforderung sein, und ich bin daran interessiert, einen Weg zu finden, der auch funktionieren würde.

UIAlertController

Hier ist mein aktueller Code für den Standard oben suchen UIAlertController.

let alertController = UIAlertController(title: "Privacy Policy", message: privacyPolicyString, preferredStyle: UIAlertControllerStyle.Alert) 

let AcceptAction = UIAlertAction(title: "Accept", style: UIAlertActionStyle.Default, handler: {(action: UIAlertAction) -> Void in 

    //perform next step in login verification 
}) 

let DeclineAction = UIAlertAction(title: "Decline", style: UIAlertActionStyle.Default, handler: {(action: UIAlertAction) -> Void in 

    //User has declined privacy policy. The view resets to standard login state 
}) 

alertController.addAction(AcceptAction) 
alertController.addAction(DeclineAction) 

self.presentViewController(alertController, animated: true, completion: nil) 
+0

Sie benötigen, um Ihre eigene Warnungsansicht für das machen, damit Sie Zugriff haben diese Ansicht und die Fähigkeit zum Ausgleich deaktivieren oder aktivieren Knopf –

Antwort

0

Dies kann mit nativen UIAlertController möglich sein, wie folgt: -

  1. Variable vom Typ UIAlertAction
  2. erstellen
  3. Set enabled auf false
  4. Wenn Sie nach unten gescrollt, können Sie dies auf überprüfen scroll view delegate oder eine beliebige benutzerdefinierte Weise, dann setzen Sie die enabled auf True
  5. Das Wichtigste in unten c Ode ist: -

    self.actionToEnable = action 
    action.enabled = false 
    

-Code-Referenz: -

weak var actionToEnable : UIAlertAction? 

func callbackWhenScrollToBottom(sender:UIScrollView) { 
    self.actionToEnable?.enabled = true 
} 

     let alert = UIAlertController(title: "Title", message: "Long text here", preferredStyle: UIAlertControllerStyle.Alert) 
     let cancel = UIAlertAction(title: "Accept", style: UIAlertActionStyle.Cancel, handler: { (_) -> Void in 

     }) 

     let action = UIAlertAction(title: "Decline", style: UIAlertActionStyle.Default, handler: { (_) -> Void in 

     }) 

     alert.addAction(cancel) 
     alert.addAction(action) 

     self.actionToEnable = action 
     action.enabled = false 
     self.presentViewController(alert, animated: true, completion: nil) 
+0

Das ist ein guter Anfang! Können Sie mir einen Einblick geben, wie ich den Scroll-Offset des Alerts im Callback finde? Und wo würde ich diese Funktion nennen? – Danoram

+0

Ich habe die Hierarchie von UIAlertController überprüft, konnte aber keine scrollview, textview finden. Daher kann der Scroll-Offset nicht erreicht werden. Haben Sie irgendeine Lösung gefunden? – pkc456

+0

Nein, leider noch nicht. Ich schaue immer noch darauf! – Danoram