2013-05-12 1 views
6

Ich benutze FPPopover, um eine Pop-Over-Ansicht für meine iPhone App zu präsentieren. Ich habe ein Problem, aber wenn ich es präsentiere, wird es mir nur erlauben, es so niedrig zu präsentieren, oder es wird an die Spitze springen. Und das ist lange bevor es abgeschnitten wird.Wie verschiebe ich FPPopover so niedrig wie ich möchte? Wenn ich es zu tief drücke, springt es zurück an die Spitze

Zum Beispiel:

[self.speedOptionsPopover presentPopoverFromPoint:CGPointMake(0, 235)]; 

funktioniert gut, aber wenn ich es anstelle von 235 ein 255 setzen (wie es von der Unterseite eine gute 40px ist) springt er wieder auf die Spitze.

Hat jemand irgendwelche Erfahrung damit oder wie könnte ich es beheben?

Auch Bonuspunkte, wenn Sie erklären können, warum der Inhalt für das Popover immer 50px von oben beginnt, wenn ich es höher starten möchte. Wie kann ich das auch ändern?

Weiterer Code von der Schöpfung:

- (void)speedOptionsTapped:(UIBarButtonItem *)sender { 
    // Set the delegate in the controller that acts as the popover's view to be self so that the controls on the popover can manipulate the WPM and number of words shown 
    self.speedOptionsController.delegate = self; 

    self.speedOptionsPopover.arrowDirection = FPPopoverNoArrow; 
    self.speedOptionsPopover.border = NO; 
    self.speedOptionsPopover.contentSize = CGSizeMake(320, 190); 
    [self.speedOptionsPopover presentPopoverFromPoint:CGPointMake(0, 235)]; 
} 
+0

Haben Sie versucht, den Rahmen Ihrer Schaltflächen festzulegen? Ändert es etwas? – Lucien

+0

Verwenden Sie FPPopover innerhalb einer Ansicht, die sich in einer .nib befindet? – ModernCarpentry

+0

Was ist die Größe von 'FPPopover' in der Höhe. Kannst du auch einen Screenshot hinzufügen? – Ayush

Antwort

3

Versuchen Sie diesen Teil des Codes in FPPopoverController.m ersetzt:

//ok, will be vertical 
if(ht == best_h || self.arrowDirection == FPPopoverArrowDirectionDown) 

mit diesem Code:

//ok, will be vertical 
if (self.arrowDirection == FPPopoverNoArrow) 
{ 
    r.origin.x = p.x; 
    r.origin.y = p.y; 
} 
else if(ht == best_h || self.arrowDirection == FPPopoverArrowDirectionDown) 

Der Grund, warum Sie Dieses Problem tritt möglicherweise auf, wenn das Makro FPPopoverArrowDirectionIsVertical ein Popover ohne Pfeile als betrachtet einen senkrechten Pfeil haben. Das Ergebnis ist, dass versucht wird, Ihr Popover so nah wie möglich an der Ansicht zu positionieren, die das Popover ausgelöst hat.

Wenn Sie den Code wie oben beschrieben ersetzen, erstellen Sie einen Sonderfall für Popovers ohne Pfeile und fordern, dass die ursprünglichen Punkte ohne Neupositionierung berücksichtigt werden.

Verwandte Themen