我覺得下面的圖片可以說明問題很好...我也複製相應的代碼部分在這裏 https://www.dropbox.com/s/pd1syth3gce6qh7/ios_uimenucontroller.png的iOS共享UIMenuController可能緩存UIMenuItem
:
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] Tap
2012-10-15 14:02:16.455 TouchTracker [8808:c07] count:0
2012-10-15 14:02:16.455 TouchTracker [8808:c07] count:1
2012-10-15 14: 02:16.456 TouchTracker [8808:c07] ???
2012年10月15日14:02:16.459 TouchTracker [8808:C07]線路釋放
只有一個UIMenuItem加到UIMenuController,並在運行時間期間只有一個的菜單項的NSArray,但兩個菜單項出現在模擬器中。
如果我點擊刪除項目,它會發送刪除:消息給自己。事實上,標題之前是「刪除」,看起來好像是緩存了。
已嘗試在iPhone模擬器上重置內容和設置。還刪除了DerivedData文件夾的內容...沒有解決方案。也將盡快在設備上進行測試。
你有什麼想法嗎?
在這裏你可以找到完整的項目: https://www.dropbox.com/s/wg9ol63aa05px26/TouchTracker.zip
由於提前, 的Gabor歐羅斯
謝謝你的提示...其實解決辦法是改變這一點: - (空)刪除:(UIMenuItem *)發送到 : - (空)deleteLine:(UIMenuItem *)發件人 它看起來像系統使用的刪除名稱!哎喲! :) –