我正在使用popover和我的应用程序。我想在popoverview打开时启用外部触摸功能。现在,当我点击popoverview的外部时,我无法触摸popoverview之外,它就消失了。
这是我想要做的屏幕截图。我在故事板中使用popoversegue。
我该怎么办?
感谢您的帮助。
答案 0 :(得分:3)
您可以使用passthroughViews
来实现相同目标。
yourPopoverController.passthroughViews = [NSArray arrayWithObjects:viewToEnableTouch, nil];
passthroughViews
财产用户可以在弹出框中与之交互的视图数组 可见。声明
<强>夫特强>
var passthroughViews: [AnyObject]?
<强>目标C 强>
@property(nonatomic, copy) NSArray *passthroughViews
<强>讨论强>
当弹出窗口处于活动状态时,通常会与其他视图进行交互 禁用直到弹出被解雇。分配视图数组 到这个属性允许处理弹出窗口外的水龙头 相应的观点。进口声明
导入UIKit
<强>状况强>
适用于iOS 3.2及更高版本。
参考UIPopoverController Class Reference
如果您不希望在用户点击外部时忽略popover,那么您可以通过以下方式实现此目的:
- (BOOL) popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
return NO;
}
答案 1 :(得分:2)
以下是使用SWIFT对我有用的内容。它将允许您与&#34; doneBtn&#34;以及#34; myMap&#34;。
@IBOutlet weak var myMap: MKMapView!
func showPopover() {
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var popOverVC: popVC = storyboard.instantiateViewControllerWithIdentifier("popVC") as popVC
popOverVC.modalPresentationStyle = .Popover
popOverVC.preferredContentSize = CGSizeMake(self.myMap.frame.width, self.myMap.frame.height)
if let pop = popOverVC.popoverPresentationController {
var passthroughViews: [AnyObject]?
passthroughViews = [doneBtn, myMap]
pop.passthroughViews = NSMutableArray(array: passthroughViews!)
pop.permittedArrowDirections = .Any
pop.sourceView = myButton
pop.delegate = self
pop.sourceRect = CGRect(
x: 0,
y: 0,
width: 10,
height: 10)
}
self.presentViewController(
popOverVC,
animated: true,
completion: nil)
}