그룹화 된 UITableView에서 사용자가 오랫동안 셀을 누르면 사용자 정의 UIMenuController를 표시하려고합니다. 그러나, 긴 언론을 성공적으로 감지 한 후 UIMenuController를 표시 할 수 없습니다. 어떤 도움이라도 대단히 감사합니다. cellForRowAtIndexPath에서 UITableView에 셀이있을 때 UIMenuController를 표시하는 데 문제가 발생했습니다.
MyViewController.h
@interface MyViewController : UIViewController <UITableViewDelegate,UITableViewDataSource>
UITableView *table;
@property (nonatomic, retain) IBOutlet UITableView *table;
@end
나는 나의 긴 보도 제스처 인식기 여기
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:SectionsTableIdentifier] autorelease];
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
[cell addGestureRecognizer:longPress];
[longPress release];
내 handleLongPress 액션 메소드
-(void)handleLongPress:(UIGestureRecognizer *)longPress {
if (longPress.state == UIGestureRecognizerStateBegan) {
CGPoint pressLocation = [longPress locationInView:self.table];
NSIndexPath *pressedIndexPath = [self.table indexPathForRowAtPoint:pressLocation];
UIMenuItem *first = [[UIMenuItem alloc] initWithTitle:@"Save" action:@selector(saveRecent)];
UIMenuItem *second = [[UIMenuItem alloc] initWithTitle:@"Edit" action:@selector(editQuery)];
UIMenuController *menuController = [UIMenuController sharedMenuController];
menuController.menuItems = [NSArray arrayWithObjects:first,second,nil];
[menuController setTargetRect:longPress.view.frame inView:longPress.view.superview];
[menuController setMenuVisible:YES animated:YES];
[pressedIndexPath release];
}
}
편집하고 저장 단지 UIAlertView를 표시하는 처리 방법입니다 연결합니다. 나는 또한 UIMenuController가 표시되는 경우에만 저장하고 나 또한 내가 당신이 필요로 생각
-(BOOL)canBecomeFirstResponder {
return YES;
}
나는 그것을 않아도됩니다. MyViewController 구현 파일에서 - (BOOL) canBecomeFirstResponder { \t return YES; } – aahrens
하지만 첫 응답자가 되려면 [someView becomeFirstResponder]를 호출해야합니다. – TomSwift
UIMenuController는 firstResponder 뷰를 메시지를 보내는 시작점으로 사용합니다. 첫 번째 응답자가 활성화되어 있지 않으면 메뉴가 표시되지 않습니다. 귀하의 메뉴가 적용되는 뷰는 becomeFirstResponder를 호출하여 첫 번째 응답자로 만들어야합니다. – TomSwift