2 개의 viewController가 있고 처음에는 tapRecognizer를 사용하여 문자열을 복사하는 UImenucontroller를 표시하기 위해 누르고 있습니다. 탭은 탐색 바에서 제목을 선택하는 데 사용되며 복사 항목이있는 UImenucontroller가 표시됩니다.UIMenuController가 View Controller를 변경 한 후에 표시되지 않습니다.
처음에는 시간이 걸렸지 만 사용자가 다른보기 컨트롤러로 전환하여 다시 첫 번째보기 컨트롤러로 돌아 오면 더 이상 메뉴가 표시되지 않습니다.
-(void)viewDidLoad{
[super viewDidLoad];
UIView *viewWithTitleLabel = self.navigationController.navigationBar.subviews[1];
viewWithTitleLabel.userInteractionEnabled = YES;
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(topBarTitleTap:)];
[viewWithTitleLabel addGestureRecognizer:longPress];
}
-(void)topBarTitleTap:(UILongPressGestureRecognizer *)gestureRecognizer
{
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
UIMenuController *menuController = [UIMenuController sharedMenuController];
[menuController setTargetRect:CGRectMake(CGRectGetMidX([self.view bounds]), -12.0, 0.0f, 0.0f) inView:self.view];
[menuController setMenuVisible:YES animated:YES];
}
}
- (void) copy:(id) sender {
// called when copy clicked in tab bar title
NSString *copyStringverse = self.navigationItem.title;
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
[pasteboard setString:copyStringverse];
}
- (BOOL) canBecomeFirstResponder {
return YES;
}
은 작동하지 않았다 조금도. setTargetRect : 메소드의 y 값에 -12 대신 40과 같은 값을 전달하면 다른 컨트롤러로 이동하여 돌아올 때마다 매번 작동합니다. – rdelmar
이 뷰는 하위 뷰이며 탐색 뷰 컨트롤러에 포함되어 있으므로 -12를 추가 한 것입니다. 그리고 그것이 나타날 때 정확한 위치에 있습니다. –