【发布时间】:2012-12-03 08:28:21
【问题描述】:
我有一个带有UITabBar 的应用程序。每个标签都是一个UINavigationController,里面有几个UIViewControllers。其中一个视图控制器包含一个UITableView,我想显示一个浮动菜单来删除长按的UITableViewCell。
我正在使用UIMenuController,但它没有显示,因为单元格拒绝成为第一响应者。
这是我的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 1.0; //second
[table addGestureRecognizer:lpgr];
[lpgr release];
}
-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer {
if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
CGPoint p = [gestureRecognizer locationInView: table];
NSIndexPath *indexPath = [table indexPathForRowAtPoint:p];
if (indexPath != nil) {
UITableViewCell* cell = [self tableView:table cellForRowAtIndexPath: indexPath];
[cell becomeFirstResponder];
UIMenuItem *delete = [[UIMenuItem alloc] initWithTitle:@"Delete" action:@selector(delete:)];
UIMenuController *menu = [UIMenuController sharedMenuController];
[menu setMenuItems:[NSArray arrayWithObjects:delete, nil]];
[menu setTargetRect:cell.frame inView:cell.superview];
[menu setMenuVisible:YES animated:YES];
}
}
}
在 UITableViewCell 上我重写了方法:
-(BOOL) canBecomeFirstResponder {
return YES;
}
关于为什么细胞没有成为第一响应者的任何想法?
谢谢!
【问题讨论】:
-
你能告诉我为什么它必须成为第一响应者吗?无论如何,第一响应者应该是添加在单元格顶部的菜单!
-
@imthi 我读到它需要成为第一响应者才能显示菜单。无论如何我的问题是菜单没有显示,只是我认为它与谁是第一响应者有关
标签: ios ios5 uimenucontroller uiresponder becomefirstresponder