【发布时间】:2014-06-09 04:30:12
【问题描述】:
我有 2 个视图控制器,在第一个视图控制器中,我使用 tapRecognizer 按住以显示 UImenucontroller 以复制字符串。点击用于选择导航栏上的标题,它会显示一个带有复制项的 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 的值,那么即使在转到另一个控制器并返回之后,它也每次都能正常工作。
-
这个视图是一个子视图,嵌入在导航视图控制器中,这就是我添加-12的原因。并且在显示时处于正确位置。
标签: ios objective-c xcode uiviewcontroller uimenucontroller