2017-06-16 2 views
0

Ich habe this Dokument gelesen. Gesehen this SO Frage (unter others). Und wir haben uns this Tutorial angesehen. Aber für das Leben von mir kann ich meinen benutzerdefinierten Storyboard-Übergang nicht zum Laufen bringen. Ich benutze den Code, der in this SO gefunden wird, um neue Ansichten und ihre Controller zu bringen.Anleitung zum Hinzufügen von NSView zu Responder-Kette mit Swift

Grundsätzlich werden dem Benutzer in der Startansicht fünf Schaltflächen angezeigt. Wenn Sie auf eine Schaltfläche klicken, wird eine andere Ansicht von links eingeblendet. Alles funktioniert, alle NSButtons, die auf den neuen Ansichten platziert werden, erhalten Klicks und tun, was sie tun sollen. Auf Textfelder kann jedoch nicht zugegriffen werden: Sie können einen beliebigen Text auswählen, aber nicht überschreiben.

Ich nehme an, dass ich den neuen View/View-Controler nicht korrekt in die Responder-Kette eingefügt habe (aber warum funktionieren die Buttons und die Textfelder nicht?).

Vernünftige Nutzung von

self.resignFirstResponder() 

und

newViewController.becomeFirstResponder() 

immer true zurück. Ich habe sie in den verschiedenen anfänglichen Lebenszyklusfunktionen der neuen Ansichten sowie in der tatsächlichen benutzerdefinierten am Ende der Animation platziert.

Wenn das Segment ein Preset-Blatt, Modal, Popover oder was auch immer ist, dann erhält die neue Ansicht alle Aktionen/Eingabe ganz gut. Es ist also definitiv mein Code.

Ich weiß, es ist keine gute Form, aber ich werde verrückt: Kann jemand bitte Schritt für Schritt ein Beispiel mit Swift geben?

[EDIT] Arghhhh! Es scheint, dass, weil ich die "Titelleiste" in meinem App-Fenster deaktiviert hatte, dann lehnte es ab, Ersthelfer zu nehmen. Schade, mir gefiel das saubere Fenster ohne Titelblick ....

+0

Sind die Textfelder bearbeitet werden? Wenn Sie den Text auswählen können, reagieren Sie auf Mausereignisse und sind in der Responder-Kette. – Willeke

+0

Das ist das merkwürdige bisschen: nein, sind sie nicht. Wählbar, aber nicht editierbar Die Ansicht hat auch eine hellere Farbe auf ihrem Hintergrund, wenn sie nach einem voreingestellten Übergang voll funktionsfähig ist. – Todd

+0

[Es ist nicht möglich, NSTextField auf NSPopover zu bearbeiten, obwohl das bearbeitbare Verhalten aktiviert ist] (https://stackoverflow.com/q/7214273/4244136) – Willeke

Antwort

0

In meinem Fall wollte ich, dass es keine Titelleiste zum App-Fenster gibt. Wenn die Titelleiste Option deaktiviert ist in IB Abschnitt des Storyboards Fenster Attribute, dann müssen Sie Unterklasse NSWindow und außer Kraft setzen canBecomeMain und canBecomeKey:

import Cocoa 

class BTVWindow: NSWindow { 

    override var canBecomeKey: Bool{ 
     get { 
      return true 
     } 
    } 

    override var canBecomeMain: Bool{ 
     get { 
      return true 
     } 
    } 
} 
Verwandte Themen