2010-04-12 3 views
4

У меня есть приложение iPad с таблицей «ящик», отображаемой в popover. Пользователь может нажать и удерживать элемент в ящике, чтобы перетащить этот элемент из него и в мой основной вид. Эта часть отлично работает; к сожалению, перетаскиваемый вид появляется под popover и слишком мал, чтобы быть видимым, пока он не вытащится из-под него. Если я добавлю представление в качестве подзона контроллера вида в popover, оно будет обрезано рамкой popover, и поскольку я не могу получить доступ к представлению UIPopoverController, я не могу отключить его уровень masksToBounds, и это вероятно, не было бы большой идеей. Я подозреваю, что я мог бы использовать дополнительный UIWindow с высоким значением windowLevel, чтобы заставить перетаскиваемый вид появиться поверх popover, но это похоже на перебор. Есть ли лучшее решение?Как добавить представление поверх UIPopoverController

ответ

7

Got it. UIWindow работает отлично. Код:

// when drag starts 
draggingView = [[UIWindow alloc] initWithFrame:CGRectMake(0,0,100,100)]; 
draggingView.windowLevel = UIWindowLevelAlert; 
draggingView.center = [gestureRecognizer locationInView:self.view.window]; 
[draggingView makeKeyAndVisible]; 

// when drag ends 
[draggingView release]; 
draggingView = nil; 
0

Добавление Swift Версия:

let windows: [UIWindow] = UIApplication.shared.windows 
    let firstWindow: UIWindow = windows[0] 

    firstWindow.addSubview(loadingView) 
    firstWindow.bringSubview(toFront: loadingView) 

EDIT админу: спасибо за обзор - удалил мой другой ответ в двух экземплярах How to show a UIView OVER a UIPopoverController