iOS 共享 UIMenuController 可能会缓存 UIMenuItem
Posted
技术标签:
【中文标题】iOS 共享 UIMenuController 可能会缓存 UIMenuItem【英文标题】:iOS shared UIMenuController probably cache UIMenuItem 【发布时间】:2012-10-15 15:15:21 【问题描述】:我认为下面的图片可以很好地描述这个问题...... https://www.dropbox.com/s/pd1syth3gce6qh7/ios_uimenucontroller.png
我这里也复制了相应的代码部分:
CGPoint point = [sender locationInView:self];
selectedLine = [self lineAtPoint:point];
if(selectedLine)
[self becomeFirstResponder];
UIMenuController *menuController = [[UIMenuController sharedMenuController] retain];
NSLog(@"count: %d", [[menuController menuItems] count]);
UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"???" action:@selector(delete:)];
[menuController setMenuItems:[NSArray arrayWithObjects: menuItem, nil]];
NSLog(@"count: %d", [[menuController menuItems] count]);
for (UIMenuItem *item in [menuController menuItems])
NSLog(@"%@", [item title]);
[menuController setTargetRect:CGRectMake(point.x, point.y, 2, 2) inView:self];
[menuController setMenuVisible:YES animated:YES];
[menuController release];
[menuItem release];
else
[[UIMenuController sharedMenuController] setMenuVisible:NO animated:YES];
[linesInProcess removeAllObjects];
[self setNeedsDisplay];
控制台输出: 2012-10-15 14:02:16.450 TouchTracker[8808:c07] 点击 2012-10-15 14:02:16.455 TouchTracker[8808:c07] 计数:0 2012-10-15 14:02:16.455 TouchTracker[8808:c07] 计数:1 2012-10-15 14:02:16.456 TouchTracker[8808:c07] ??? 2012-10-15 14:02:16.459 TouchTracker[8808:c07] 线发布
UIMenuController 中只添加了一个 UIMenuItem,运行时在 menuItems NSArray 中只添加了一个,但模拟器中出现了两个菜单项。
如果我点击删除项目,它会向自己发送 delete: 消息。其实之前的标题是“删除”,看起来好像被缓存了。
已经尝试在 iPhone 模拟器上重置内容和设置。还删除了 DerivedData 文件夹的内容……还没有解决方案。也将很快在设备上进行测试。
你有什么想法吗?
在这里您可以找到完整的项目: https://www.dropbox.com/s/wg9ol63aa05px26/TouchTracker.zip
提前致谢, 加博尔·奥罗斯
【问题讨论】:
【参考方案1】:“删除”是始终可见的系统菜单项。您的自定义菜单项已添加到其中。 来自UIMenuController Class Reference:
删除菜单项已添加到系统菜单项集中。 点击它会调用 UIResponderStandardEditActions 操作方法 delete:,iOS 3.2 也添加了。
【讨论】:
感谢您的提示...实际上解决方案是将以下内容更改为:-(void)delete:(UIMenuItem *)sender 为:-(void)deleteLine:(UIMenuItem *)sender 它看起来像删除名称被系统使用!哎哟! :)以上是关于iOS 共享 UIMenuController 可能会缓存 UIMenuItem的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 的 UIMenuController 开头附加自定义 UIMenuItems
如何在 iOS 5 中隐藏 UIMenuController
从 UIMenuController 中删除复制、查找和共享