单击rightBarButton时,将显示UIPopoverController.
问题是:当点击NavigationBar时,此UIPopoverController不会被忽略.
为什么?有没有办法解决它?我试图搜索,但找不到任何关于此的内容.
提前致谢.
在iPad上,可以使用-showFromBarButtonItem:animated:来显示UIActionSheet.这很方便,因为它将UIPopoverController包装在操作表周围,并将弹出框的箭头指向传入的UIBarButtonItem.
但是,此调用将UIBarButtomItem的工具栏添加到直通视图列表中 - 这并不总是可取的.并且,如果没有指向UIPopoverController的指针,则无法将其他视图添加到直通列表中.
有没有人知道获得指向弹出控制器的指针的制裁方法?
提前致谢.
我有一个带有子类UINavigationController的UIPopoverController.父视图和子视图都是UITableviews.
当我最初使用contentSizeForViewInPopover =(320,480)调用父视图时,它工作得很好.
当我点击子视图时,我将popover调整为contentSizeForViewInPopover =(320,780)
当返回到父视图时,我无法让popover调整大小,返回到contentSizeForViewInPopover =(320,480).popover保持在(320,780)大小.
一直在尝试一切,只是遗漏了一些东 在上面的场景中,任何人都知道如何使用UIPopoverControllers调整视图大小?
提前致谢!!
我的通用应用程序出了问题.我已将Base SDK设置为iPhone 3.2并将目标设置为3.1.
我已将使用UIPopoverController的文件移动到他们自己的文件中,并且在iPhone上加载应用程序时不应加载它们.不过,当我构建我的应用程序时,我在构建和调试到我的设备时出现以下错误:
dyld:未找到符号:_OBJC_CLASS _ $ _ UIPopoverController参考自:/var/mobile/Applications/B3B90643-92DC-4E5C-8B2F-83A42D6D57E0/citybikes.app/citybikes预期:/System/Library/Frameworks/UIKit.framework/UIKit in /var/mobile/Applications/B3B90643-92DC-4E5C-8B2F-83A42D6D57E0/citybikes.app/citybikes
我真的希望有人可以帮助我.
最诚挚的问候,Paul Peelen
我们在我们的应用程序中使用了很多共同的视图UINavigationControllers.偶尔UINavigationControllers会在popover视图中.现在我们放入导航控制器的视图会修改导航控制器的工具栏按钮,在某些情况下,还会使用我们创建的自定义按钮.我们需要能够从UIViewcontroller自身中找出视图是否在popoverview中,以便我们可以显示正确颜色的按钮.
我们可以很容易地从UIViewController获取导航控制器参考UIViewController.navigationController,但是似乎找不到任何东西UIPopoverController.
有没有人对如何做到这一点有任何好的想法?
谢谢!
我已经搜索了整个互联网(也许我夸大了一点),以获得有关如何将DatePicker放入UIPopover并在iPad应用程序中显示的教程.我尝试创建一个viewcontroller,将datepicker放在视图控制器中,然后:
self.popover = [[UIPopoverController alloc] initWithContentViewController:sa];
(sa是我创建的viewcontroller的名称),但这不起作用,应用程序崩溃.有人可以帮忙吗?
正如标题所述,在iOS8中,[UIPopoverController presentPopoverFromRect]不再适用于[UIApplication sharedApplication] .keyWindow.(它在iOS7中有效)
我验证了以下代码:
TestViewController *test = [[TestViewController alloc] initWithNibName:nil bundle:nil];
if (testPopoverController == nil) {
    testPopoverController = [[UIPopoverController alloc] initWithContentViewController:test];
    testPopoverController.popoverContentSize = CGSizeMake(250, 95*5);
}
CGPoint point = [sender convertPoint:CGPointMake(0, 0) toView:nil];
CGRect rect = CGRectMake(point.x, point.y, 24, 24);
[testPopoverController presentPopoverFromRect:rect inView:[UIApplication sharedApplication].keyWindow permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
我正在使用iOS 8的新自适应"Present As Popover"功能.我在StoryBoard中连接了一个简单的segue来进行演示.它适用于iPhone 6 Plus,因为它将视图显示为弹出窗口,而在iPhone 4s上则显示为全屏视图(工作表样式).
问题是当显示为全屏视图时,我需要在视图中添加"完成"按钮,以便可以调用dismissViewControllerAnimated.当它显示为弹出窗口时,我不想显示"完成"按钮.

我试着查看presentationController和popoverPresentationController的属性,我什么也没发现,它告诉我它是否实际显示为弹出框.
NSLog( @"View loaded %lx", (long)self.presentationController.adaptivePresentationStyle );          // UIModalPresentationFullScreen
NSLog( @"View loaded %lx", (long)self.presentationController.presentationStyle );                  // UIModalPresentationPopover
NSLog( @"View loaded %lx", (long)self.popoverPresentationController.adaptivePresentationStyle );   // UIModalPresentationFullScreen
NSLog( @"View loaded %lx", (long)self.popoverPresentationController.presentationStyle );           // UIModalPresentationPopover
adaptivePresentationStyle始终返回UIModalPresentationFullScreen,而presentationStyle始终返回UIModalPresentationPopover
在查看UITraitCollection时,我确实发现了一个名为"_UITraitNameInteractionModel"的特征,当它实际显示为Popover时,它只被设置为1.但是,Apple不通过popoverPresentationController的traitCollection直接访问该特征.
SDK 8.1在iOS 8.1下运行时会出现此问题,但在iOS 7下运行时则不会出现此问题.仅适用于iPad.问题出现在模拟器和硬件设备上.
下面的代码演示了一个视图控制器,它包含一行UITableView,其中包含一行UIButton.点击按钮或行将导致弹出窗口出现.点击按钮时这很好用,但是当点击表视图的行时,弹出窗口会有一些延迟.在我的测试中,我第一次点击行时弹出窗口通常会出现很少或没有延迟,但是第二次点击该行时,弹出窗口可能需要几秒钟才会出现,并且通常直到我点击其他地方才出现风景.但是,即使在行上的第一次敲击时也会发生延迟(特别是在硬件上测试时).
我展示的代码已经尽可能地降低了,同时保留了问题.在我看来,UITableView在某种程度上是导致这种延迟发生的关键.
我知道在iOS 8中不推荐使用某些UIPopoverController代码.我试图在iOS 8中使用UIPopoverPresentationController,结果是相同的:在弹出窗口出现之前有时会有很长的延迟.我对这种新方法还不是很熟悉,所以我可能会犯错误,但无论如何都可以通过将USE_TRADITIONAL_METHOD宏设置为0而不是1来测试iOS 8代码.
任何有关如何修复或绕过此建议(同时仍使用tableview)的建议将不胜感激.
#import "MyViewController.h"
@interface MyViewController ()
@property (nonatomic) UIPopoverController* myPopoverController;
@end
@implementation MyViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // setup table view
     UITableView* tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 500, 500) style:UITableViewStyleGrouped];
    [self.view addSubview:tableView];
    tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    tableView.dataSource = self;
    tableView.delegate = self;
    
    // setup button
    UIButton* button = [UIButton buttonWithType:UIButtonTypeSystem];
    [self.view addSubview:button];
    button.frame = CGRectMake(20, 550, 100, 20);
    [button setTitle:@"Show popover" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(showPopover:) forControlEvents:UIControlEventTouchUpInside];
} …我很难过: -
我在商店里有一个遗留应用程序,我正在为iOS 8/9刷新.它是几年前写的(前ARC),是iPhone和iPad的通用应用程序.现在一切都在这个......
在iPad上,屏幕顶部有一个工具栏,我提供了一个UIPopoverControllers,其中包含一个UINavigationController,其中包含一些您可以深入查看的标准UITableViewController类型屏幕.
在Portrait(和Portrait Upside Down)中,一切都按预期工作.
然而,在风景中,按下"返回"(标准背面而不是自定义背景)会导致奇怪的动画 - 输出控制器跳出弹出窗口并快速滑出屏幕(方向受设备所在的方向控制),而输入控制器只是一旦外出控制器跳出弹出窗口,就会立即出现.我不得不使用慢动画来确定这是全速,它看起来像一个巨大的故障.
有一个短短20秒的电影显示这里的缺陷 ; 请注意在14秒内点击"位置"时会发生什么.
如果我将VC堆栈作为表单而不是UIPopover,那么无论方向如何,一切都按预期工作.我也尝试过更新的UIPopoverPresentationController并遇到了同样的问题,这让我感到很惊讶.
这种情况发生在我正在呈现的两个弹出框中(一个来自工具栏左侧,一个来自工具栏右侧),它们都有非常不同的内部结构.唯一的共同因素是它们在UIPopover中有一个UINavigationController.
我已经使用视图调试器来检查视图层次结构,但似乎没有什么不寻常的,我无法在故障期间捕获视图,无论我运行模拟器有多慢,所以我怀疑我看到了内部问题弹出窗口或导航控制器.
有没有人见过类似的东西?我在设备上(iOS 8.4)和iOS 8和9的模拟器中都看到了这一点.
对于上下文,这个项目没有故事板,很少使用xib并且通常在loadView中的代码中构建UI - 它实际上是一个旧的应用程序...
谢谢你的任何指示.不确定任何代码在这里会有多大帮助,但这里有关于popover的介绍;
LocationsViewController* locationsvc = [[LocationsViewController alloc] init];
UINavigationController *localNavigationController = [[UINavigationController alloc] initWithRootViewController:locationsvc];
localNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
[locationsvc release];
UIPopoverController* aPopover = [[UIPopoverController alloc] initWithContentViewController:localNavigationController];
aPopover.delegate = self;
aPopover.backgroundColor = [UIColor colorWithWhite:0 alpha:0.9];
self.locationPopoverController = aPopover;        
[aPopover release];
[localNavigationController release];
[locationPopoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
我用下面的新口味代码得到同样的缺陷;
UINavigationController *destNav = [[UINavigationController alloc] initWithRootViewController:locationsvc];
locationsvc.preferredContentSize = CGSizeMake(320,280);
UIPopoverPresentationController *newPresentationController;
destNav.modalPresentationStyle …ipad ×5
ios ×3
iphone ×3
ios8 ×2
objective-c ×2
ios8.1 ×1
resize ×1
uidatepicker ×1
uitableview ×1