我正在一个自定义的UIView画布上做一些绘图,而不是在视图底部有一组按钮来允许用户选择形状,我想让用户做一个长按手势,然后出现一个弹出式菜单,其中有他们可以选择的不同形状。虽然我假设在iOS中有类似的东西,但我在xCode中看不到这样的东西。我不希望当你的电池电量和通知不足时出现警报弹出窗口。
我已经研究过使用UIPopoverController,但我对我读到的其他一些关于堆栈溢出的问题以及苹果提供的文档感到有点困惑。
发布于 2015-10-14 18:00:18
在将该按钮与viewController和popover作为一个段进行连接后,您将需要进行准备。下面是为popover segue做准备的代码。
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if let identifier = segue.identifier
{
switch identifier
{
case History.SegueIdentifier:
if let tvc = segue.destinationViewController as? TextViewController
{
if let ppc = tvc.popoverPresentationController
{
ppc.delegate = self
}
tvc.text = "\(diagnosticHistory)"
}
default: break
}
}
}
一定要记住,如果你有一个iPhone,弹出窗口将会全屏显示,所以你可以用它来修复这个问题,假设一个文本接受了一些特定的元素。
这将修复弹出窗口,使其与文本中元素的大小完全一致。
@IBOutlet weak var textView: UITextView!
{
didSet
{
textView.text = text
}
}
var text : String = ""
{
didSet
{
textView?.text = text
}
}
override var preferredContentSize : CGSize
{
get
{
if textView != nil && presentingViewController != nil
{
return textView.sizeThatFits(presentingViewController!.view.bounds.size)
}
else
{
return super.preferredContentSize
}
}
set {super.preferredContentSize = newValue}
}
}
我将这两个放在不同的视图控制器中,但我猜它会起作用。您还需要实现UIPopoverPresentationControllerDelegate
和
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
return UIModalPresentationStyle.None
}
为了你的第一个viewController。
https://stackoverflow.com/questions/27233977
复制相似问题