gpt4 book ai didi

ios - 关闭 Popover 并一键打开新的 Popover

转载 作者:可可西里 更新时间:2023-11-01 05:47:48 27 4
gpt4 key购买 nike

Apple 的“移动人机界面指南”是关于弹出框的:

When possible, allow people to close one popover and open a new one with one tap. This behavior is especially desirable when several different bar buttons each open a popover, because it prevents people from having to make extra taps.

我现在能想到的唯一解决方案是在关闭弹出窗口时跟踪触摸的位置,并检查它是否是另一个按钮的位置。有没有更简单的方法来做到这一点?

PS:我在 stackoverflow 中搜索并在发布之前用 google 搜索了很长时间。抱歉,如果以前在这里问过这个问题。

更新

我想我没有很好地解释自己。假设我有三个按钮。他们都打开一个弹出窗口。我的用户点击按钮 #1,弹出窗口打开。当弹出窗口打开时,用户点击按钮 #2。弹出窗口被关闭(因为用户在弹出窗口之外点击 - 非模态弹出窗口的默认行为)并且新的弹出窗口打开,因为用户点击了按钮#2。所有这些都无需点击两次:一次关闭弹出窗口,两次打开新弹出窗口。

第二次更新

我构建了一个简单的虚拟模型来重现我正在尝试做的事情。当用户点击按钮并打开弹出窗口时,不会调用打开弹出窗口的方法。因此,用户必须单击两次才能打开第二个弹出窗口。有什么想法吗?

#import "RootViewController.h"
#import "AViewController.h"

@interface RootViewController()

@property (nonatomic, retain) UIPopoverController *currentPopover;

@end

@implementation RootViewController

@synthesize currentPopover;

- (void)loadView
{
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
UIView *view = [[UIView alloc] initWithFrame:applicationFrame];

CGRect buttonFrame = CGRectMake(50, 100, 200, 40);

for (int i = 0; i < 3; i++)
{

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:[NSString stringWithFormat:@"Button %i", i + 1] forState:UIControlStateNormal];
[button addTarget:self action:@selector(openPopover:) forControlEvents:UIControlEventTouchDown];
[button setFrame:buttonFrame];
[view addSubview:button];

buttonFrame.origin.y += 50;
}


self.view = view;
[view release];
}

- (IBAction)openPopover:(id)sender
{
AViewController *avc = [[AViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:avc];
[avc release];

UIPopoverController *tempPopover = [[UIPopoverController alloc] initWithContentViewController:navigationController];
[tempPopover setDelegate:self];
[tempPopover setPopoverContentSize:CGSizeMake(320, 500)];
[tempPopover presentPopoverFromRect:[sender frame] inView:[self view] permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];

self.currentPopover = tempPopover;
[tempPopover release];


[navigationController release];
}

- (void)dealloc
{
[currentPopover release];
[super dealloc];
}

@end

最佳答案

如果您在工具栏中使用条形按钮项,则当您点击另一个条形按钮项时,打开的弹出框不会自动关闭。在这些情况下,您应该关闭可见的弹出窗口并一步打开另一个弹出窗口。

关于ios - 关闭 Popover 并一键打开新的 Popover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7390523/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com