Ios 打开时如何启用外部触摸?

Ios 打开时如何启用外部触摸?,ios,segue,uipopover,Ios,Segue,Uipopover,我的应用程序正在使用popover。我想在打开时启用外部触摸。现在我无法触摸popoverview的外部,当我单击popoverview的外部时,它会消失 这是我想做的屏幕截图。我在故事板中使用PopoOverSegue 我如何处理这个问题 谢谢你的帮助 您可以使用直通视图实现相同的功能 yourPopoverController.passthroughViews = [NSArray arrayWithObjects:viewToEnableTouch, nil]; passthroughv

我的应用程序正在使用popover。我想在打开时启用外部触摸。现在我无法触摸popoverview的外部,当我单击popoverview的外部时,它会消失

这是我想做的屏幕截图。我在故事板中使用PopoOverSegue

我如何处理这个问题

谢谢你的帮助


您可以使用
直通视图
实现相同的功能

yourPopoverController.passthroughViews = [NSArray arrayWithObjects:viewToEnableTouch, nil];
passthroughview
属性

用户可以在打开popover时与之交互的视图数组 看得见的声明

Swift

var passthroughview:[AnyObject]?

目标-C

@property(非原子,复制)NSArray*passthroughview

讨论

当popover处于活动状态时,通常会停止与其他视图的交互 禁用,直到弹出框被解除。指定视图数组 此属性允许用户处理popover之外的点击 相应的视图。进口声明

导入UIKit

可用性

在iOS 3.2及更高版本中提供

参考文献


如果您不想在用户单击外部时关闭popover,则可以通过以下方式实现:

- (BOOL) popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
    return NO;
}

以下是使用SWIFT对我有效的方法。它将允许您与“doneBtn”以及“myMap”交互


谢谢。它可以帮我完成任务,但我没有popovercontroller课程。我用爆米花。如何在我的项目中导入此代码。@fozoglu:在prepare for segue中,您可以像这样获得它:UIPopoverController*popover=[(UIStoryboardPopoverSegue*)segue popoverController];我得到一个错误viewToEnableTouch->使用未声明的identifier@fozoglu:这是我输入的虚拟值。您需要将您的实际视图放在那里(类似于self.view)对不起。我很困惑。我创建了一个简单的项目。我在故事板中添加了两个按钮,只有一个按钮连接PopoOverSegue。我创建了两个UIViewController类第一个ViewController第二个MyPopoverController。在ViewController中导入MyPopoverController,然后我该怎么做?
@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)
}