2013-04-11 2 views
0

Есть ли способ, который я могу вычислить/обнаружить, если PopOverController находится в верхней части View? Если это так, чтобы показать, что это разрешено. ArrowsDirections: UIPopoverArrowDirectionDown vs allowedArrowDirections: UIPopoverArrowDirectionUp зависит от того, находитесь ли вы внизу или сверху или если есть достаточно места для отображения popOverControl без изменения размера? Альтернатива: я думал о прокрутке представления вниз или вверх если не хватает места, но я бы хотел использовать allowArrowDirections: UIPopoverArrowDirectionDown и allowedArrowDirections: UIPopoverArrowDirectionUp. Какие-либо предложения?PopOverController resize at Top of View

+1

Вы должны проверить свою позицию Y вашей точки касания. вычислить комнату и показать в соответствии с – Hiren

+0

, и какова координата для абсолютной вершины представления? мне нужно получить координату Y UIWindow? или это так же просто, как верх 0? – wilforeal

+0

вы можете проверить событие touch – Hiren

ответ

0

Вам не нужно будет вычислять, где будет отображаться контроллер popover. Контроллер popover предназначен для указания местоположения, где стрелка может Указывает на точку, в которой будет добавлен popover. Затем контроллер popover вычислит, где у него есть место, чтобы отобразить его всплывающее представление.

Однако, если вы можете ограничить место, где контроллер popover размещает представление popover, указав один или несколько UIPopoverArrowDirection. Например, предположим, что у вас есть большой вид (вид A) с меньшим подвью (вид B), расположенный в левой части окна A. Если вы хотите показать popover для представления кнопки, расположенного справа от вида B, когда вы представляете, вы можете сказать контроллер поповера только показать свой поповер справа от кадра данной кнопки в виде А вот так:

[popoverController presentPopoverFromRect: buttonView.frame 
            inView: viewA 
       permittedArrowDirections: UIPopoverArrowDirectionLeft 
           animated: YES]; 

Edit

может вы получаете кадр текстового поля в пространстве координат представления, содержащего вид таблицы ?

CGRect frame = [tableView.superview convertRect: textField.frame fromView: textField.superview]; 
[popoverController presentPopoverFromRect: frame 
            inView: tableView.superview 
       permittedArrowDirections: UIPopoverArrowDirectionLeft 
           animated: YES]; 

Предполагая, что вид сверху tableView достаточно велик для ваших нужд, это должно соответствовать отображению popover.

+0

В текущем проекте Im, работающем над мной, у меня есть PopOver, показывающий поверх UITextField внутри UITableviewCell. Если Im в верхней части UItableviewCell, UIPopOverControl изменяет размер до меньшего размера, не позволяя элементам быть видимыми. Мне нужно иметь представление, расположенное сверху или под UITextField – wilforeal

+0

@wilforeal Я отредактировал свой ответ на основе вашего последнего комментария. –

0

получить ваше прикосновение координаты от

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 
    CGPoint touchPoint = [touch locationInView:myView]; 
    NSLog("%lf %lf", touchPoint.x, touchPoint.y); 
} 

После получения X и Y точки вы можете рассчитать доступное пространство для открытия вашего PopOverController.

Пожалуйста, дайте мне знать, если вам нужна дополнительная помощь.