gpt4 book ai didi

iOS:如何从 UIMenuController 获取选定的 UIMenuItem

转载 作者:可可西里 更新时间:2023-11-01 03:56:22 26 4
gpt4 key购买 nike

我正在尝试使用 UIMenuCnotroller 来显示动态生成的项目列表,它们共享相同的操作方法,因此我需要知道在单个操作方法中选择了哪个项目。

但是在action方法中- (void)menuItemAction:(id)sender;sender其实是UIMenuController对象,我没有找到任何方法UIMenuController 可以告诉我选择了哪个菜单项。

我能想到的一个解决方案是为不同的item动态生成不同的action选择器,在forwardInvocation中做一些tricks

但是有没有更简单的方法呢?

最佳答案

您可以像这样使用 UIMenuCnotroller:1)创作:

UIMenuController *menuController = [UIMenuController sharedMenuController];
UIMenuItem *open = [[UIMenuItem alloc] initWithTitle:@"Open" action:@selector(open:)];
UIMenuItem *reDownload = [[UIMenuItem alloc] initWithTitle:@"Re-Download" action:@selector(reDownload:)];

[menuController setMenuItems:[NSArray arrayWithObjects:open, reDownload, nil]];
[menuController setTargetRect:cell.frame inView:self.view];
[menuController setMenuVisible:YES animated:YES];

[open release];
[reDownload release];

2) 捕捉 Action 应该实现下一个方法:

- (BOOL) canPerformAction:(SEL)selector withSender:(id) sender 
{
if (selector == @selector(open:))
{
return YES;
}

if (selector == @selector(reDownload:))
{
return YES;
}

return NO;
}

- (BOOL) canBecomeFirstResponder
{
return YES;
}

3) 以及你的方法的实现:

- (void) open:(id) sender 
{
[self doSomething];
}

- (void) reDownload:(id) sender
{
[self doSomething];
}

希望这对您有所帮助。

关于iOS:如何从 UIMenuController 获取选定的 UIMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756651/

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