UITabBar
이있는 응용 프로그램이 있습니다. 모든 탭은 UINavigationController
이며 내부에 여러 개의 UIViewControllers
이 있습니다. 뷰 컨트롤러 중 하나에는 UITableView
이 포함되어 있으며 길게 눌린 UITableViewCell
을 삭제하기위한 플로팅 메뉴를 표시하려고합니다.UITableViewCell이 첫 번째 응답자가되지 않습니다 (셀 제스처에 UIMenuController 표시)
나는 UIMenuController
을 사용하고 있지만 셀이 첫 번째 응답을 거부하기 때문에 표시되지 않습니다. 있는 UITableViewCell 내가 오버라이드 (override) 한 방법에
- (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];
}
}
}
: 셀이 첫 번째로 반응이되고되지 않는 이유에
-(BOOL) canBecomeFirstResponder {
return YES;
}
어떤 아이디어
여기 내 코드입니까?
감사합니다.
을 할 수 첫 번째 응답자가되어야하는 이유를 말해 주시겠습니까? 어쨌든 첫 번째 응답자는 셀 위에 추가되는 메뉴 여야합니다! – imthi
@imthi 메뉴를 표시하려면 먼저 응답해야합니다. 어쨌든 내 문제는 메뉴가 표시되지 않는다는 것입니다. 그 사람이 첫 번째 응답자와 관련이 있다고 생각했습니다. – momo