Cocoa touch 移除UIPopoverController的边框

Cocoa touch 移除UIPopoverController的边框,cocoa-touch,uikit,ipad,uipopovercontroller,Cocoa Touch,Uikit,Ipad,Uipopovercontroller,我有一个要求,在这里,我必须为UIPopoverController的popover视图显示自定义边框,而不是默认的“黑色主题”边框。可能吗 我不能使用默认的黑色边框,因为它不适合应用程序的颜色主题 SDK中没有这样做的规定。我也在谷歌上搜索过,看看是否有其他人遇到过这个问题,他们是否已经解决了这个问题,但没有运气 等待建议 谢谢, Raj通过使用UIView解决了这个问题,还通过覆盖主rootViewController视图中的hitTest来查看触摸点是否在该视图之外。如果是这样,将使用该事

我有一个要求,在这里,我必须为UIPopoverController的popover视图显示自定义边框,而不是默认的“黑色主题”边框。可能吗

我不能使用默认的黑色边框,因为它不适合应用程序的颜色主题

SDK中没有这样做的规定。我也在谷歌上搜索过,看看是否有其他人遇到过这个问题,他们是否已经解决了这个问题,但没有运气

等待建议

谢谢,
Raj通过使用UIView解决了这个问题,还通过覆盖主rootViewController视图中的hitTest来查看触摸点是否在该视图之外。如果是这样,将使用该事件来取消新的popover,否则该事件将转发到新的popover。

将popview添加为子视图,代码为:

//!you must define the dimBackgroundView and set view in head file firstly, 

//action for a button,to add set view as a subview
 - (IBAction)openSetting:(id)sender {

    if(!dimBackgroundView)
    {
       dimBackgroundView = [[UIView alloc] initWithFrame:self.view.bounds];
    }
    dimBackgroundView.backgroundColor = [[UIColor clearColor] colorWithAlphaComponent:0.0];

    [self.view addSubview:dimBackgroundView];

    SettingViewController *set = [[SettingViewController alloc]initWithNibName:nil bundle:nil];
    [set.view setFrame:CGRectMake(120, 50, 400, 600)];
    self.setView = set;

    //add shadow
    set.view.layer.shadowOffset = CGSizeMake(3, 3);
    set.view.layer.shadowColor = [UIColor colorWithRed:70.0/255.0 green:70.0/255.0 blue:80.0/255.0 alpha:1.0].CGColor;
    set.view.layer.shadowOpacity = 0.8;

    [self.view addSubview:set.view];
}
//check touch position, if touch position is outside of setview, remove it from superview
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event{
    UITouch *touch = [[event allTouches] anyObject];
    if ([self.setView.view superview] && self.dimBackgroundView == touch.view) {
        [self.dimBackgroundView removeFromSuperview];
        [self.setView.view removeFromSuperview];
    }
}

这是不可能的。你必须创建自己的PopoverControllerOh!有没有关于如何创建我们自己的PopoverController的建议?因为,它不仅包括在特定位置将其添加为子视图,还包括在用户在弹出窗口区域外点击时将其删除。谢谢。创建一个非常大的透明视图,并在其中添加您的popover。当触摸大的透明视图时,它应该消失。它很简单,但要使它看起来漂亮需要更多的工作(动画、阴影等)。感谢您的回复,我将不得不使用这种迂回的方式,因为没有默认的支持。我正在考虑将应用程序的UIWindow子类化,并重写-sendEvent方法来实现这一点。如果你想要一个渐变并模拟uiview的背景,那么就使用uiview作为背景。否则,我想UIWindow sendEvent方法会更好。你用view.layer.shadow添加了shadow吗?没有,但我们可以这样做,没什么大不了的。@Jasmine-很抱歉,我可能响应晚了,我再也无法访问该代码库了,所以很遗憾,我无法共享现有代码。但是让我知道这是否非常重要,我会写下一个可重用的模块,因为我记得怎么做,然后上传到Github供大家将来参考。我们也遇到了这个问题。你的解决办法似乎很明智。如果你真的把它上传到github,那将非常有用。抱歉@emrys57-刚才搜索了我所有的档案。不幸的是,在我实现它的地方,我再也无法访问该代码库了。我没有时间再写了,如果你写了一个类似的解决方案,请分享。