Gibt es eine Möglichkeit, das Popover nicht abzuweisen, wenn man es außerhalb drückt?

8

Ich kenne die SDK-Dokumentation sagt

  

Taps außerhalb des Popover-Inhalts schließen das Popover automatisch aus.

Aber ich bin sicher, dass die klugen Leute hier einen Weg gefunden haben :) vielleicht sollte ich die Popover-Ablehnungsfunktion überschreiben?

Danke

BEARBEITEN: Ich habe versucht, die PassthroughViews wie hier vorgeschlagen, und es funktioniert perfekt. Hier ist der Code für den, der es braucht - in diesem Beispiel stelle ich self.view in das Array, was bedeutet, dass wo auch immer außerhalb der Schaltfläche, wo das Popover entstanden ist, nichts das Popover verwirft.

%Vor%     
Lior Frenkel 29.03.2011, 18:49
quelle

3 Antworten

11

Sie müssen die Eigenschaft passthroughViews festlegen. Aus der Dokumentation:

  

Ein Array von Ansichten, mit denen der Benutzer interagieren kann, während das Popover sichtbar ist.

     

@property (nonatomic, copy) NSArray *passthroughViews

     

Wenn ein Popover aktiv ist, sind Interaktionen mit anderen Ansichten normalerweise deaktiviert, bis das Popover beendet wird. Wenn Sie dieser Eigenschaft ein Array mit Sichten zuweisen, können Taps außerhalb des Popover von den entsprechenden Sichten verarbeitet werden.

Setzen Sie passthroughViews auf ein Array von Ansichten, die Sie mit dem Touch-Ereignis behandeln wollen, anstatt das Popover einfach zu verwerfen.

    
indragie 29.03.2011, 18:54
quelle
7

Es gibt eine sehr einfache und legitime Lösung. Stellen Sie im View-Controller, der Ihr UIPopoverController darstellt, das Protokoll UIPopoverControllerDelegate und implementieren Sie die folgende Delegate-Methode. Ich habe das gerade getestet und es verhindert Popover zu entlassen.

%Vor%

Stellen Sie nur sicher, dass Sie den Delegaten Ihres Popover-Controllers auf den View-Controller gesetzt haben, der dies implementiert.

Sie können das Popover mit [popoverController dismissPopoverAnimated:NO]; method ablehnen.

    
Sam 15.08.2013 16:01
quelle
6

Die angenommene Antwort beantwortet nicht wirklich die Frage: "Gibt es eine Möglichkeit, das Popover nicht abzuweisen, wenn man es außerhalb drückt?", imo. Es bietet zwar eine mögliche Ansicht, könnte aber hackischen Zugriff auf alle übergeordneten Ansichten erfordern und bestimmen, welche Ansichten auf dem Bildschirm usw. sind. Die Frage könnte wie folgt umformuliert werden: "Wie mache ich eine Popover-Ansicht modal?"

Sie würden dies so tun, mit einer Schaltfläche, um das Popover zu schließen:

%Vor%

Dann werden Sie in Ihrer processDoneAction-Methode müssen Sie das Popover zu schließen. Andere Überlegungen wären das Verwerfen und erneute Anzeigen bei Änderungen der Geräteausrichtung, aber ich überlasse das einer anderen Übung, da diese bereits im Stackoverflow beantwortet wurde.

    
JDL 14.10.2011 15:46
quelle

Tags und Links