iOS共享UIMenuController可能缓存UIMenuItem

时间:2012-10-15 15:15:21

标签: ios caching ios6 uimenucontroller

我认为以下图片可以很好地描述问题... 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中,但模拟器中出现了两个菜单项。

如果我点击删除项目,它会向自己发送删除:消息。实际上标题之前是“删除”,看起来它以某种方式缓存。

已经尝试在iPhone模拟器上重置内容和设置。还删除了DerivedData文件夹的内容......还没有解决方案。也将很快在设备上进行测试。

你有什么想法吗?

在这里您可以找到完整的项目: https://www.dropbox.com/s/wg9ol63aa05px26/TouchTracker.zip

提前致谢,  Gabor Orosz

1 个答案:

答案 0 :(得分:0)

“删除”是一个始终可见的系统菜单项。您的自定义菜单项将添加到该项。 来自UIMenuController Class Reference

  

“删除”菜单项已添加到系统菜单项集中。   点击它会调用UIResponderStandardEditActions操作方法   删除:,也在iOS 3.2中添加。