2010-10-07 5 views

Antwort

35

Siehe meine Implementierung hier: https://github.com/werner77/WEPopover

Es hat die gleiche Schnittstelle wie die UIPopoverController aber ist für iPhone und mit Unterstützung für benutzerdefinierte Hintergrundansichten verallgemeinert.

+0

Ich habe es versucht. Ausgezeichnete Arbeit. –

+0

Sehr nützlich. Große Arbeit erledigt! – Jyotsna

+0

Es gibt Fehler. 1. Absturz, wenn der Delegat sumoDismissPopover nicht implementiert (leicht zu reparieren). Da Sie die Methode als optional deklariert haben, ist es nicht korrekt, die Methode zu implementieren. 2. Die Größe ändert sich nicht, wenn sich popoverContentSize ändert, während das Popover sichtbar ist. Dieser ist nicht leicht zu reparieren (zumindest nicht für die 10 Minuten, die ich versucht habe, aber ich werde es trotzdem tun, weil es in der Version von UIKit fatale Konstruktionsfehler gibt). P.S. Ich werde gerne meine Fixes teilen, ich brauche Ihre E-Mail-Adresse dafür - weiß nicht, wie Sie eine Pull-Anfrage mit GitX-Client, den ich benutze, übermitteln. – Soonts

0

Grundsätzlich ist der beste Weg, dies zu tun ist, benutzerdefinierte UIAlertView Subklassen zu implementieren, die aussehen/verhalten, wie Sie wollen, über benutzerdefinierte Animationen und hinter und verschwinden in der Lage zu klicken (wenn Sie diese Funktionalität wollen, wie UIPopoverController hat)

Bearbeiten: Sie können auch versuchen, eine Ansicht zu verwenden und sie modal zu präsentieren, obwohl die Animationen möglicherweise nicht das sind, was Sie suchen.

2

Es gibt einen Grund UIPopoverController ist kein Standard-UI-Element auf dem iPhone, ist dieser Bildschirmraum eher eingeschränkt. Ein Popover, das leicht lesbar ist, impliziert, dass ein Großteil des iPhone-Bildschirms vom Popover aufgegriffen wird. Vielleicht sollten Sie Ihre UI-Entscheidung überdenken.

Vielleicht eine coverVertical modal view?

+2

Dies ist nicht wahr. Es gibt eine nicht dokumentierte UICalloutView in MapKit, die einen ähnlichen Zweck erfüllt. Es muss nicht so groß wie der PopoverController sein, aber gerade genug, um eine gut definierte Inhaltsansicht anzuzeigen, die ich ihm überlasse. –

+0

Ich denke, ich werde die UICalloutView außerhalb von MapKit schreiben. Danke für den Vorschlag. –

5

Ich habe eine andere Alternative SGPopoverController bei http://github.com/KJoyner/SeaGlass zur Verfügung gestellt. Wie der WEPopover hat dieser eine ähnliche Schnittstelle wie UIPovoerController, funktioniert aber auf dem iPhone. Diese Version behandelt mehr Ecken, funktioniert sowohl modal als auch nicht modal, unterstützt Passthrough-Ansichten und mehr.

+0

Super, ich werde es bald ausprobieren. –

+0

Ich fand SGPopoverController nicht so toll. Es treten Probleme beim Rendern auf, wenn sich die Pfeile in der Nähe der Ecken befinden. Zweitens fehlt eine presentPopoverFromBarButtonItem-Methode. Wenn Sie einen Drop-In-Ersatz für UIPopoverController benötigen, ist dies noch nicht der Fall. – TomSwift

+0

Welche Art von Rendering-Problemen haben Sie?Können Sie ein Problem auf GitHub eingeben und ich werde es mir ansehen. –

3

erstellen UIPopover + iPhone.h

#import <Foundation/Foundation.h> 

@interface UIPopoverController (overrides) 
+ (BOOL)_popoversDisabled; 
@end 
+3

Nur eine Anmerkung, dass dies in der App Store Überprüfung nicht genehmigt werden würde, da es eine private Var ist. – runmad

+0

Könnte funktionieren, wenn Sie nicht die Kategorie Approach verwenden, sondern die UIPopoverController ableiten. – stigi

1

andere git gefunden. Sieht mehr aktualisiert und aktiv gepflegt. Es verwendet QuantzCore, um das Popover zu zeichnen, das so elegant aussieht wie das native iOS SDK. Nur für Ihre Referenz: https://github.com/50pixels/FPPopover