В моем приложении существует потребность в элементе popover, который отображает полное описание.Изменить высоту UIPopoverController, на высоту UITextView
В UIViewController
есть нормальный UITextView
, который отображает первые 4 строки описания. Теперь, когда пользователь нажимает на это описание, должно отображаться полное описание. Это будет сделано с недавно установленным элементом управления popover для iPhone.
На данный момент все работает, за исключением того факта, что я хочу, чтобы popover имел высоту, которая точно соответствует высоте строки в UITextView
в . Таким образом, если описание длиннее, оно автоматически сделает popover выше.
Следующий код вызывается, когда пользователь нажимает UITextView
:
func textViewShouldBeginEditing(textView: UITextView) -> Bool {
if textView == descriptionTextView {
let sb = UIStoryboard(name: "Main-alternative", bundle: nil)
let popoverController = sb.instantiateViewControllerWithIdentifier("descriptionControllerID") as! DescriptionPopupViewController
popoverController.modalPresentationStyle = UIModalPresentationStyle.Popover
popoverController.popoverPresentationController?.delegate = popoverController;
popoverController.popoverPresentationController?.sourceView = descriptionTextView
popoverController.popoverPresentationController?.sourceRect = descriptionTextView.frame
popoverController.descriptionText = currentObject?["description"] as! String
if let frameHeight = popoverController.textView?.frame.height {
popoverController.preferredContentSize = CGSizeMake(fixedWidth, frameHeight)
}
self.presentViewController(popoverController, animated: true, completion: nil)
}
return false
}
Так preferredContentSize
должен получить высоту вложенной UITextView
в DescriptionPopupViewController
. Однако, когда я пытаюсь сделать что-то вроде этого он не будет работать:
Я думаю, потому что frameHeight является nil
Но входит или нет в ваш оператор 'if' во время отладки? –