iOS Popover отображается в TextView

Я реализовал всплывающие окна в виде презентаций UIViewController. Я использую модальный стиль представления Popover и UIPopoverPresentationController в качестве основного вида.

let popoverViewController = segue.destinationViewController as! SearchTableViewController
self.searchTableViewController = popoverViewController
popoverViewController.modalPresentationStyle = UIModalPresentationStyle.Popover
popoverViewController.popoverPresentationController!.delegate = self

Моя проблема в том, что всплывающие окна отображаются поверх TextViews, к которым они привязаны.

Пример:

введите описание изображения здесь

Вот как у меня есть TextView и всплывающее окно на раскадровке:

введите описание изображения здесь

введите описание изображения здесь

У кого-нибудь есть идея, почему поповер указывает на верхний левый угол этого TextView? Это работало нормально с iOS 8, но всплывающие окна немного изменились в iOS9.

1 ответ

Решение

Я не уверен, почему это происходит, но быстрое решение состоит в том, чтобы переместить кадр туда, куда вы хотите. Я сделал это с кодом ниже:

let absoluteframe = patientTextField!.convertRect(patientTextField!.frame, fromView: self.scrollView)
popoverViewController.popoverPresentationController!.sourceRect = CGRectMake(absoluteframe.minX + 60,absoluteframe.minY + 20,0,0)

Во-первых, вам нужно получить фрейм для элемента, к которому привязано всплывающее окно. Затем вы можете установить sourceRect, обновив положение прямоугольника текущими значениями x и y. Надеюсь, что это помогает любому с подобными проблемами!

Другие вопросы по тегам