标签: uipopovercontroller

适用于iPhone的UIPopOverController(目前仅适用于iPad)

在我为iPhone实现类似的东西之前,我想知道是否有人为iPhone实现了类似UIPopOverController的东西.到目前为止,这仅适用于iPad.

iphone uipopovercontroller ios4

19
推荐指数
2
解决办法
2万
查看次数

UIPopoverController dealloc被称为ARC环境

在第二次显示弹出控制器时(在解除它然后重新显示它之后),我收到以下错误:

因未捕获的异常'NSGenericException'而终止应用程序,原因:' - [UIPopoverController dealloc]到达,而popover仍然可见.

堆栈跟踪只是一堆十六进制,SIGABRT每次都发生在UIApplicationMain.这是按钮触发的代码:

- (IBAction)createNewScore:(id)sender {
    if (self.pc)
        if (self.pc.popoverVisible)
            return;
        else
        // Breakpoint is hit here—crashes after this line
            [self.pc presentPopoverFromBarButtonItem:(UIBarButtonItem *)sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
    NGDocumentInfoViewController *documentInfoVC = [[NGDocumentInfoViewController alloc] initWithBlankDocumentTargetInManagedObjectContext:self.context];
    UINavigationController *navc = [[UINavigationController alloc] initWithRootViewController:documentInfoVC];
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneCreatingNewScore:)];
    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelCreatingNewScore:)];
    navc.navigationBar.topItem.leftBarButtonItem = doneButton;
    navc.navigationBar.topItem.rightBarButtonItem = cancelButton;
    CGSize popoverSize = CGSizeMake(documentInfoVC.view.bounds.size.width, documentInfoVC.view.bounds.size.height);
    documentInfoVC.contentSizeForViewInPopover = popoverSize;
    UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:navc];
    popover.delegate = self;
    self.pc …
Run Code Online (Sandbox Code Playgroud)

memory-management dealloc uipopovercontroller ios automatic-ref-counting

19
推荐指数
1
解决办法
8965
查看次数

删除UIPopoverController创建的内部阴影

我正在创建iOS提供的popover的自定义布局.我已经将UIPopoverBackgroundView子类化,并让它为我的popover正确绘制背景.我的问题是现在UIPopoverController在popover上创建了一个内部阴影,影响了popover的contentViewController.我想删除这个内部阴影,所以只显示我的contentViewController的内容.

这是popover当前的外观,使用UILabel来演示对contentViewController的影响.

酥料饼

有没有办法去除这个内部阴影?

cocoa-touch objective-c ipad uipopovercontroller ios5

19
推荐指数
3
解决办法
7468
查看次数

Popover不以按钮为中心

我试图将一个弹出按钮放在一个按钮上.我似乎无法弄清楚我可能会出错的地方.它不是按钮位于按钮中间,而是偏离屏幕宽度的一半.

 @IBAction func buttonClicked(sender: AnyObject){
    var popoverViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ServiceOptions") as! ServiceOptionsPopover
    popoverViewController.delegate = self
    popoverViewController.modalPresentationStyle = .Popover
    popoverViewController.preferredContentSize   = CGSizeMake(300, 300)

    let popoverPresentationViewController = popoverViewController.popoverPresentationController

    popoverPresentationViewController?.permittedArrowDirections = .Up
    popoverPresentationViewController?.delegate = self
    popoverPresentationViewController?.sourceView = sender as! UIButton
    popoverPresentationViewController?.sourceRect = sender.frame

    presentViewController(popoverViewController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

uipopovercontroller ios swift

19
推荐指数
2
解决办法
1万
查看次数

在iPad上使用UIActionSheet

Apple的UIActionSheet文档让我感到困惑.首先,在iPad人机界面指南中,它说:

要了解有关在代码中使用操作表的更多信息,请参阅"iPad编程指南"中的"使用弹出窗口显示内容".

但是在"使用弹出窗口显示内容"部分中,它根本没有提到动作表!我在这里错过了什么吗?

http://developer.apple.com/library/ios/#documentation/General/Conceptual/iPadHIG/UIElements/UIElements.html#//apple_ref/doc/uid/TP40009446-CH6-SW9

我的主要问题是:在iPad上,UIPopoverController和UIActionSheet有什么区别?如果UIActionSheet自动出现在UIPopoverController中,是否有任何理由使用UIActionSheet?我看到它的委托和按钮的自动创建如何减少代码行数,但从可用性POV来看,是否存在差异?

此外,显示带动画的actionSheet根本不起作用.它的外观和行为与没有动画时显示的actionSheet完全相同(这与我刚刚使用UIPopoverController并且根本没有使用actionSheet完全相同).这是我的代码:

UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"An unsaved property already exists. You must assign a name to this property before creating a new property. Would you like to:"
    delegate:self
    cancelButtonTitle:nil
    destructiveButtonTitle:@"Overwrite"
    otherButtonTitles:@"Open unsaved property", nil];

[action showFromRect:CGRectMake(0, 0, 200, 200) inView:self.mainSplitViewController.view animated:NO];
Run Code Online (Sandbox Code Playgroud)

我如何获得一个看起来像Apple文档中的示例动画actionSheet的actionSheet(从地图应用程序中,您向联系人添加位置)?

我可能最终会使用警报而不是弹出窗口或actionSheet,但理解这一点仍然有用.

谢谢!

objective-c uialertview uiactionsheet ipad uipopovercontroller

18
推荐指数
1
解决办法
3万
查看次数

将UIPopoverController置于相同位置,仅更改箭头偏移量

我的目标是为UIPopoverController保持相同的坐标,只需改变箭头偏移量.所以基本上我有三个按钮触摸每个按钮显示一个弹出窗口.当呈现此弹出窗口时,它会更改屏幕上的位置,但我不希望这样.要更清楚地看一下screenoshots:

在此输入图像描述

在此输入图像描述

在此输入图像描述

objective-c uipopovercontroller ios ios5

18
推荐指数
1
解决办法
8958
查看次数

UIPopover presentFromBarButton偏离中心

我在一个项目中注意到,由于某种原因,右侧栏按钮项目上的弹出框的位置似乎偏向右侧.我尝试使用UIButton作为自定义视图,然后从该按钮呈现弹出窗口,但是如果我实际上为它提供了'居中'值,则popover似乎忽略了showFromRect.

偏离中心的人行道

这背后的代码非常简单:

- (void)viewDidLoad {
    [super viewDidLoad];

     UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"share"] style:UIBarButtonItemStylePlain target:self action:@selector(shareTap:)];

     self.navigationItem.rightBarButtonItem = button;
}

- (void)shareTap:(UIBarButtonItem *)button {
    self.popover = [[UIPopoverController alloc] initWithContentViewController:[[UIViewController alloc] init]];

    [self.popover presentPopoverFromBarButtonItem:button permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我切换到使用内部按钮,如上所述,我看到类似的行为(注意颜色变化,因此图像显示).

使用内部按钮

这个代码仍然相当简单:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIButton *innerButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 22, 22)];
    [innerButton setImage:[UIImage imageNamed:@"share"] forState:UIControlStateNormal];
    [innerButton addTarget:self action:@selector(shareTap:) forControlEvents:UIControlEventTouchUpInside];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:innerButton];;
}

- (void)shareTap:(UIButton *)button {
    self.popover = [[UIPopoverController alloc] initWithContentViewController:[[UIViewController alloc] init]];

//    CGRect …
Run Code Online (Sandbox Code Playgroud)

uibarbuttonitem uipopovercontroller ios

18
推荐指数
1
解决办法
1067
查看次数

单击NavigationBar时,UIPopoverController不会被忽略

单击rightBarButton时,将显示UIPopoverController.

问题是:当点击NavigationBar时,此UIPopoverController不会被忽略.

为什么?有没有办法解决它?我试图搜索,但找不到任何关于此的内容.

提前致谢.

iphone uipopovercontroller

17
推荐指数
3
解决办法
5354
查看次数

针对5.1 SDK进行编译强制新的UIPopoverController"滑入"弹出窗口的演示 - 如何禁用?

根据5.1 SDK(发行版)编译我的iPad应用程序会导致UIPopoverController使用左侧演示文稿中的新"幻灯片放映"显示自己.这完全打破了我的popover演示,它依赖于具有"黑色"样式标题和一定高度.我试过设置presentsWithGesture到NO,但似乎只禁用滑动手势,并不会停止的演讲风格.

这个相同的应用程序,无需重新编译,但在iOS 5.1上运行,使用旧的popover演示文稿样式.所以我知道iOS 5.1仍然支持向后兼容的方法.如何选择激活弹出窗口的旧演示文稿?

不幸的是,这对我的应用程序非常重要.

如果不这样做,有没有办法在新的弹出窗口上获得"黑色"标题?


虽然我的应用程序中有一个UISplitViewController,但它不负责显示弹出窗口.相反,我正在使用此代码:

   [self.popoverController presentPopoverFromRect:ipadButtonMenu.frame
                                           inView:self.view
                         permittedArrowDirections:UIPopoverArrowDirectionUp
                                         animated:YES];
Run Code Online (Sandbox Code Playgroud)

这个问题是由苹果开发者论坛中交叉张贴在这里.我希望有人有答案.


预期演讲: 在此输入图像描述

在iOS 5.1 SDK下编译后的演示文稿: 在此输入图像描述

uikit ipad uisplitviewcontroller uipopovercontroller ios

17
推荐指数
1
解决办法
3566
查看次数

UIActivityViewController需要很长时间才能呈现

我为iPhone制作了一个应用程序.现在,我正在为iPad重新创建它.

当用户选择工具栏中的操作按钮时,弹出窗口应显示a UIActivityViewController,但由于某种原因,它需要大约10秒才能显示第一次.在iPhone上,它需要大约一秒钟.除了弹出框之外,它是相同的代码.

我尝试禁用弹出窗口,但仍需要大约10秒才能显示.

这是代码:

-(IBAction)Actions:(UIBarButtonItem*)sender 
{
    if ([activityPopover isPopoverVisible] == YES) 
    {
        [activityPopover dismissPopoverAnimated:YES];
        return;
    }
    UIWebView *currentWebView = ((TabView *)self.tabs[self.currentTabIndex]).webViewObject;

    NSString *currentURL = (NSString*)[currentWebView request].mainDocumentURL;
    if (currentURL == NULL) return;

    BookmarkActivity *bookmarkActivity = [[BookmarkActivity alloc] init];

    UIActivityViewController *sharing = [[UIActivityViewController alloc] initWithActivityItems:[NSArray arrayWithObject:currentURL] applicationActivities:@[bookmarkActivity]];

    activityPopover = [[UIPopoverController alloc] initWithContentViewController:sharing];
    [activityPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];    
}
Run Code Online (Sandbox Code Playgroud)

我已经在我的iPad 3和我的iPad mini上进行了测试,两者都需要一段时间来呈现.

我该如何解决这个问题?

objective-c uipopovercontroller ios uiactivityviewcontroller

17
推荐指数
3
解决办法
6251
查看次数