UIPopoverController presentPopoverFromRect проблема - PullRequest
12 голосов
/ 04 сентября 2011

Я пытаюсь представить UIPopoverController при нажатии кнопки UIB.Вот мой код:

- (IBAction)showColumnChooser:(id)sender {

    ColumnChooserTVC *vc = [[ColumnChooserTVC alloc] init];

    [vc setSelections:allColumns];
    [vc setDelegate:self];
    UIPopoverController *pc = [[UIPopoverController alloc] initWithContentViewController:vc];


    [pc presentPopoverFromRect:[sender frame] inView:self.view 
      permittedArrowDirections:UIPopoverArrowDirectionAny 
                      animated:YES];
    [vc release];
}

С направлением стрелки «Любой» он полностью скрывает кнопку, вот как это выглядит: enter image description here

Если я сделаю направление «Вправо»", это немного лучше, но все же есть место между поповером и кнопкой, и это кажется неправильным.enter image description here Я не хочу делать какие-то "хитрости" или "хаки" и использовать CGRect методом проб / ошибок, я хочу знать, как правильно это делать?Спасибо.

Вот кнопка в конструкторе интерфейсов, запрошенная Neckto: enter image description here

Ответы [ 2 ]

50 голосов
/ 04 сентября 2011

Я думаю, что вы смешиваете системы координат. На каждом уровне вашей точки зрения, источник перемещается. Таким образом, расположение [sender frame] в self.view не там, где расположена кнопка.

Попытка:

[pc presentPopoverFromRect:[sender bounds]
                    inView:sender
  permittedArrowDirections:UIPopoverArrowDirectionAny 
                  animated:YES];
0 голосов
/ 10 ноября 2016

И Свифт, Свифт, Свифт конечно!

pc.presentPopoverFromRect(sender.bounds, inView: sender, 
permittedArrowDirections: UIPopoverArrowDirection.Any, animated: true)
...