2017-08-16 4 views
-2

Wie kann ich verhindern, dass ein einfacher NSAlert abgewiesen wird?So verhindern Sie, dass NSAlert entlassen wird

Zum Beispiel, wenn die Anwendung startet, zeige ich ein NSAlert mit einem NSTextField enthalten. Der Benutzer muss ein Passwort eingeben. Nur wenn das Passwort korrekt ist, sollte es dem Benutzer erlaubt sein, die Anwendung zu benutzen, wenn nicht (wenn das Passwort nicht korrekt ist), sollte die Warnung dort bleiben und erneut nach dem Passwort fragen.

Dies ist mein Code so weit (die Warnung erstellen):

func applicationDidFinishLaunching(_ aNotification: Notification){ 
    let alert = NSAlert() 
    alert.addButton(withTitle: "Send") 
    alert.delegate = self 
    alert.alertStyle = .informational 
    alert.messageText = "Password - Login" 
    alert.informativeText = "Please type in your password: " 

    let txt = NSTextField(frame: NSRect(x: 0, y: 0, width: 200, height: 24)) 
    txt.stringValue = "Password:" 


    alert.accessoryView = txt 
    alert.beginSheetModal(for: NSApplication.shared().mainWindow!) { (response) in 
     if (response == NSAlertFirstButtonReturn) { 
      // the alert closes here, is there any way to prevent this? 
     } else { 
      print("No value.") 
     } 
    } 

OS: OS X Sierra, Swift 3

Antwort

1

Sie die Warnung ein zweites Mal präsentieren; Wenn Sie das Verhalten darüber hinaus anpassen müssen, müssen Sie NSAlert vermeiden und ein eigenes NSWindow oder NSPanel ausführen.

+0

Danke, ich werde versuchen, meinen eigenen "Alarm" mit einem NSPanel zu machen. Übrigens, hast du eine Idee, warum meine Frage so falsch gewählt wurde? Ist es zu kurz, sollte ich Details hinzufügen? –

+1

Ich gehöre nicht zu den Leuten, die es abgelehnt haben, aber die Frage ist ziemlich kurz. Es ist im Allgemeinen besser, klarer zu sein und genauer zu beschreiben, was genau Sie tun möchten. –

+0

Ok, danke. Ich wollte wirklich niemanden oder so ärgern. Ich werde es bearbeiten und versuchen, es genauer zu machen. Vielen Dank. –

Verwandte Themen