我有2個viewControllers和第一個我使用tapRecognizer按住,以顯示UImenucontroller複製一個字符串。輕擊用於選擇導航欄上的標題,並顯示帶有複製項目的UImenu控制器。UIMenuController不會顯示更改視圖控制器後
它適用於第一個時間,但當用戶切換到另一個視圖控制器並再次返回到第一個視圖控制器時,菜單不再顯示。
-(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值傳遞類似40而不是-12的東西,即使在轉到另一個控制器並返回之後,它也可以工作。 – rdelmar
這個視圖是一個子視圖,嵌入在導航視圖控制器中,這就是爲什麼我添加了-12。顯示時處於正確的位置。 –