我认为下面的图片可以很好地描述这个问题...... 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