在ViewDidLoad中加入:
- (void)viewDidLoad
{
[super viewDidLoad];
self._textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 100, 300, 200)];
[self.view addSubview:_textView];
UIMenuItem *menuItem = [[UIMenuItem alloc]initWithTitle:@“我是自定义的菜单" action:@selector(didClickCustomMenuAction)];
UIMenuController *menu = [UIMenuController sharedMenuController];
[menu setMenuItems:[NSArray arrayWithObject:menuItem]];
[menuItem release];
}
当然上面那个@selector里面的changeColor方法还是自己写吧,也就是说点击了我们自定义的菜单项后会触发的方法。
然后还得在代码里加上一个方法:
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if(action ==@selector(changeColor) || action == @selector(copy:))
{
if(_textView.selectedRange.length>0)
return YES;
}
return NO;
}
-(void)didClickCustomMenuAction
{
NSLog(@"%@“,__function__);
}
4.设置UITextView内边距
当我们因为一些需求将UITextView当成UILabel使用(为了使用UITextView自带的复制,粘贴,选择功能),这时我们只需要禁用UITextView的几个属性就行了
textView.editable = NO;//不可编辑
textView.scrollEnabled = NO;//不可滚动
textView.editable = NO;//不可编辑
textView.scrollEnabled = NO;//不可滚动
这样就ok;
但是当我们在实际运用时,想计算文字的大小并设置UITextView的显示大小
UIFont *font = [UIFont systemFontOfSize:14.0f]; //指定字符串的大小
[textView setText:content];
CGSize textSize = [content sizeWithFont:font constrainedToSize:CGSizeMake(200, 2000) lineBreakMode:UILineBreakModeCharacterWrap];
CGRect articleframe = [articleLabel frame];
textView.size.height = textSize.height ;
textView.size.width = textSize.width;
[textView setFrame:articleframe];
UIFont *font = [UIFont systemFontOfSize:14.0f]; //指定字符串的大小
[textView setText:content];
CGSize textSize = [content sizeWithFont:font constrainedToSize:CGSizeMake(200, 2000) lineBreakMode:UILineBreakModeCharacterWrap];
CGRect articleframe = [articleLabel frame];
textView.size.height = textSize.height ;
textView.size.width = textSize.width;
[textView setFrame:articleframe];
但是通过这种方法在UILabel上使用没有任何问题,但是在UITextView是却不行,文字总是显示不全,不管你主动写多了高度给它,当文字不一样了双会显示不全或显示高度过多;
可以用下面的方法试一下
[self.articleLabel setContentInset:UIEdgeInsetsMake(-10, -5, -15, -5)];//设置UITextView的内边距
[self.articleLabel setTextAlignment:NSTextAlignmentLeft];//并设置左对齐
[self.articleLabel setContentInset:UIEdgeInsetsMake(-10, -5, -15, -5)];//设置UITextView的内边距
[self.articleLabel setTextAlignment:NSTextAlignmentLeft];//并设置左对齐










