2012-03-26 6 views
4

Ich verwende eine popover, die einige Eingabefelder enthält. Da die iOS-Tastatur einen großen Bildschirmbereich abdeckt, muss ich manchmal den Speicherort der Popups korrigieren (indem ich das Ziel verschiebe und -presentPopoverFromView:targetView auf dem popover anrufe). Ich nehme an, dass ich das Ansichtsrechteck des Popups nicht genau bestimmen kann, aber mit der Pfeilrichtung und der Inhaltsgröße könnte ich seinen aktuellen Standort annähern.Die Popover-Pfeilrichtung kann nicht bestimmt werden

Das Problem ist, dass ich ständig unbekannte Richtung (UIPopoverArrowDirectionUnknown) bekomme, auch wenn das Popup deutlich sichtbar ist.

In iOS 5.1 UIKit.framework, Header-Datei UIPopoverController.h können wir lesen, dass wir die aktuelle Richtung des popover arrow (eins von oben, unten, links, rechts, unbekannt) bekommen können. Die einzige Bedingung ist, dass die popover präsentiert werden muss.

/* Returns the direction the arrow is pointing on a presented popover. Before  presentation, this returns UIPopoverArrowDirectionUnknown. 
    */ 
@property (nonatomic, readonly) UIPopoverArrowDirection popoverArrowDirection; 

Wir können bestimmen, ob der popover mit einem Getter präsentiert isPopoverVisible:

/* Returns whether the popover is visible (presented) or not. 
    */ 
@property (nonatomic, readonly, getter=isPopoverVisible) BOOL popoverVisible; 

Aber trotz ich den popover Pfeil Ziel nach oben oder unten usw. sehen kann und die myPopover.isPopoverVisible == YES, die Pfeilrichtung ist nach wie vor myPopover.popoverArrowDirection == UIPopoverArrowDirectionUnknown.

Die popover wird präsentiert von:

[self presentPopoverFromRect:sourceView.frame inView:sourceView.superview 
    permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

EDIT (Lösung)

Ich hatte 5.0.1 iOS auf meinem Gerät installiert (iPad). Das Kompilierungsziel war 5.1. Nach Aktualisierung des Gerätes auf 5.1 ist das Problem komplett verschwunden.

+0

Wenn Sie das Problem gelöst haben, posten Sie eine Antwort und markieren Sie sie akzeptiert, damit die Frage nicht als unbeantwortet erscheint. – Greg

+0

@PartialFinite, danke. Lernen... – Greg

Antwort

0

Ich hatte iOS 5.0.1 auf meinem Gerät (iPad) installiert. Das Kompilierungsziel war 5.1. Nach Aktualisierung des Gerätes auf 5.1 ist das Problem komplett verschwunden.