Here is the way :
Make UILable
subclass, and add this methods to the class.
TitleLabel.h file:
#import <UIKit/UIKit.h>
@interface TitleLabel : UILabel
@end
and TitleLabel.m file:
#import "TitleLabel.h"
@implementation TitleLabel
- (void)initCommon
{
UILongPressGestureRecognizer *lpRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
[self addGestureRecognizer:lpRecognizer];
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
[self initCommon];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self)
{
[self initCommon];
}
return self;
}
- (BOOL)canBecomeFirstResponder
{
return YES;
}
- (void)copy:(id)sender
{
[[UIPasteboard generalPasteboard] setString:self.text];
[self resignFirstResponder];
}
- (void)handleLongPress:(UILongPressGestureRecognizer *)sender
{
UIMenuController *menu = [UIMenuController sharedMenuController];
if (![menu isMenuVisible])
{
[self becomeFirstResponder];
[menu setTargetRect:self.frame inView:self.superview];
[menu setMenuVisible:YES animated:YES];
}
}
@end
Now add this lable to your navigation
titleView
like :
TitleLabel *title = [[TitleLabel alloc] initWithFrame:CGRectMake(0, 0, 150, 50)];
title.textAlignment = NSTextAlignmentCenter;
title.text = @"My title";
title.userInteractionEnabled = YES;
self.navigationItem.titleView = title;
and here is you can copy self.title
on long press on lable.