iOS中的UITextView文字输入光标使用技巧小结_IOS

1.创建并初始化

 @property (nonatomic, strong) UITextView *textView; 

// 创建
self.textView = [[UITextView alloc] initWithFrame:self.view.frame]; 

// 设置textview里面的字体颜色
 self.textView.textColor = [UIColor blackColor];
// 设置字体名字和字体大小
 self.textView.font = [UIFont fontWithName:@"Arial" size:18.0];
// 设置代理
 self.textView.delegate = self;
// 设置它的背景颜色
 self.textView.backgroundColor = [UIColor whiteColor];
 self.textView.text = @“hehe”;
// 返回键的类型
 self.textView.returnKeyType = UIReturnKeyDefault;
// 键盘类型
 self.textView.keyboardType = UIKeyboardTypeDefault; 

// 是否可以拖动
self.textView.scrollEnabled = YES;

2. UITextView退出键盘的几种方式
(1)如果你程序是有导航条的,可以在导航条上面加多一个Done的按钮,用来退出键盘,当然要先实现UITextViewDelegate。

- (void)textViewDidBeginEditing:(UITextView *)textView {  

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(getOverEditing)];  

}
- (void)textViewDidEndEditing:(UITextView *)textView {
  self.navigationItem.rightBarButtonItem = nil;
}
- (void)getOverEditing{
 [self.textView resignFirstResponder];
}

(2)如果你的textview里不用回车键,可以把回车键当做退出键盘的响应键。

#pragma mark - UITextView Delegate Methods
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
 if ([text isEqualToString:@"\n"]) {
   [textView resignFirstResponder];
   return NO;
  }
 return YES;
}

(3)还有你也可以自定义其他视图控件加载到键盘上用来退出,比如在弹出的键盘上面加一个view来放置退出键盘的Done按钮。

   UIToolbar * topView = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];
   UIBarButtonItem * cancelButton= [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(dismissKeyBoard)];
   NSArray * buttonsArray = @[cancelButton];
   [topView setItems:buttonsArray];
   [self.textView setInputAccessoryView:topView];
 -(void)dismissKeyBoard
 {
   [tvTextView resignFirstResponder];
 }

3.UITextView自定选择文字后的菜单

在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];//并设置左对齐 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ios
, uitextview
, 光标
文字输入
uitextview 光标位置、uitextview的光标位置、uitextview 光标颜色、uitextview隐藏光标、uitextview 光标消失,以便于您获取更多的相关知识。

时间: 2024-07-28 16:32:44

iOS中的UITextView文字输入光标使用技巧小结_IOS的相关文章

IOS中一段文字设置多种字体颜色代码_IOS

给定range和需要设置的颜色,就可以给一段文字设置多种不同的字体颜色,使用方法如下: 复制代码 代码如下: [self fuwenbenLabel:contentLabel FontNumber:[UIFont systemFontOfSize:15] AndRange:NSMakeRange(6, 1) AndColor:RGBACOLOR(34, 150, 253, 1)]; 复制代码 代码如下: //设置不同字体颜色 -(void)fuwenbenLabel:(UILabel *)lab

iOS开发中使用UILabel设置字体的相关技巧小结_IOS

一.初始化 复制代码 代码如下: UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 40, 120, 44)];      [self.view addSubview:myLabel]; 二.设置文字 1.设置默认文本 复制代码 代码如下: NSString *text = @"标签文本"; myLabel.text = text; 效果: 2.设置标签文本(此属性是iOS6.0之后才出现,如若不是必要,不

IOS中一段文字设置多种字体颜色代码

  这篇文章主要介绍了IOS中一段文字设置多种字体颜色代码,十分的实用,有需要的小伙伴可以参考下. 给定range和需要设置的颜色,就可以给一段文字设置多种不同的字体颜色,使用方法如下: 代码如下: [self fuwenbenLabel:contentLabel FontNumber:[UIFont systemFontOfSize:15] AndRange:NSMakeRange(6, 1) AndColor:RGBACOLOR(34, 150, 253, 1)]; 代码如下: //设置不同

Android编程中EditText限制文字输入的方法_Android

本文实例讲述了Android编程中EditText限制文字输入的方法.分享给大家供大家参考,具体如下: Android的编辑框控件EditText在平常编程时会经常用到,有时候会对编辑框增加某些限制,如限制只能输入数字,最大输入的文字个数,不能输入一些非法字符等,这些需求有些可以使用android控件属性直接写在布局xml文件里,比如android:numeric="integer"(只允许输入数字): 对于一些需求,如非法字符限制(例如不允许输入#号,如果输入了#给出错误提示),做成

Android编程中EditText限制文字输入的方法

本文实例讲述了Android编程中EditText限制文字输入的方法.分享给大家供大家参考,具体如下: Android的编辑框控件EditText在平常编程时会经常用到,有时候会对编辑框增加某些限制,如限制只能输入数字,最大输入的文字个数,不能输入一些非法字符等,这些需求有些可以使用android控件属性直接写在布局xml文件里,比如android:numeric="integer"(只允许输入数字): 对于一些需求,如非法字符限制(例如不允许输入#号,如果输入了#给出错误提示),做成

IOS中Json解析实例方法详解(四种方法)_IOS

作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此"http://www.bejson.com/"网站来进行JSON格式化校验(点击打开链接).此网站不仅可以检测Json代码中的错误,而且可以以视图形式显示json中的数据内容,很是方便. 从IOS5开始,APPLE提供了对json的原生支持(NSJSONSerialization),但是为了兼容以前的iOS版本,可以使用第三方库来解析Json. 本文将介绍Tou

iOS 按钮上的文字添加下划线的方法_IOS

问题:实现下图中右侧的按钮文字效果 方法: [MyTools createMyImageview:topEditView frame:CGRectMake(widthAll-90, 12, 17, 16) imageName:@"离线课程_下载更多.png"]; UIButton *downMoreButton = [MyTools createMyBtn:@"下载更多" frame:CGRectMake(widthAll-70, 10, 60, 20) uivie

详解iOS中Button按钮的状态和点击事件_IOS

一.按钮的状态 1.UIControlStateNormal     1> 除开UIControlStateHighlighted.UIControlStateDisabled.UIControlStateSelected以外的其他情况,都是normal状态     2> 这种状态下的按钮[可以]接收点击事件 2.UIControlStateHighlighted     1> [当按住按钮不松开]或者[highlighted = YES]时就能达到这种状态     2> 这种状态

iOS中Block的回调使用和解析详解_IOS

Block 回调实现 先跟着我实现最简单的 Block 回调传参的使用,如果你能举一反三,基本上可以满足了 OC 中的开发需求.已经实现的同学可以跳到下一节. 首先解释一下我们例子要实现什么功能(其实是烂大街又最形象的例子): 有两个视图控制器 A 和 B,现在点击 A 上的按钮跳转到视图 B ,并在 B 中的textfield 输入字符串,点击 B 中的跳转按钮跳转回 A ,并将之前输入的字符串 显示在 A 中的 label 上.也就是说 A 视图中需要回调 B 视图中的数据. 想不明白的同学