文本视图控件:UITextView

介绍:它是一个文本域的编辑视图,可以在该区域上进行编辑(包括删除、剪贴、复制、修改等),它与文本框UITextField的不同之处是:当它里面的每一行内容超出时,可以自动换行,而且带有滚动条,可以滚动查看其他无法显示的内容。
 
属性:

@property(nonatomic,assign) id<UITextViewDelegate> delegate;      //代理

@property(nonatomic,copy) NSString *text;                                //文本

@property(nonatomic,retain) UIFont *font;                                 //文本字体

@property(nonatomic,retain) UIColor *textColor;                         //文本颜色

@property(nonatomic) NSTextAlignment textAlignment;                //文本对齐方式

@property(nonatomic) NSRange selectedRange;                         //选中的文本区域

@property(nonatomic,getter=isEditable) BOOL editable;              //文本是否可以编辑

@property(nonatomic,getter=isSelectable) BOOL selectable ;       //文本是否可选择

@property(nonatomic) UIDataDetectorTypes dataDetectorTypes; //检测文本中数字和链接

@property(nonatomic) BOOL allowsEditingTextAttributes;           //是否允许编辑文本属性

@property(nonatomic,copy) NSAttributedString *attributedText ;//文本属性

@property(nonatomic,copy) NSDictionary *typingAttributes;     //文本属性类型字典

@property (readwrite, retain) UIView *inputView;                          //输入视图

@property (readwrite, retain) UIView *inputAccessoryView;            //输入域切换视图

@property(nonatomic,readonly) NSTextContainer *textContainer     //放置文本的区域容器

@property(nonatomic, assign) UIEdgeInsets textContainerInset;       //文本边距

@property(nonatomic,readonly) NSLayoutManager *layoutManager; //文本布局管理者

@property(nonatomic,readonly,retain) NSTextStorage *textStorage;//文本保存实例

@property(nonatomic, copy) NSDictionary *linkTextAttributes;       //文本链接属性字典

方法:

※设置文本滚动区域

- (void)scrollRangeToVisible:(NSRange)range;

※  初始化实例方法

- (instancetype)initWithFrame:(CGRect)frame textContainer:(NSTextContainer *)textContainer;

代理方法:

@protocol UITextViewDelegate <NSObject, UIScrollViewDelegate>

@optional

※点击进入文本将要开始编辑时触发的方法

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;

※离开文本将要结束编辑时触发的方法

- (BOOL)textViewShouldEndEditing:(UITextView *)textView;

※文本已经开始编辑时触发的方法

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

※文本已经结束编辑时触发的方法

- (void)textViewDidEndEditing:(UITextView *)textView;

※文本内容将要发生改变时触发的方法

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:

(NSString *)text;

※文本内容已经发生改变时触发的方法

- (void)textViewDidChange:(UITextView *)textView;

※文本内容已经选中时触发的方法

- (void)textViewDidChangeSelection:(UITextView *)textView;

※是否呼叫文本视图的链接

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:

(NSRange)characterRange;

※是否呼叫文本视图依附

- (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange;

@end

通知:

UIKIT_EXTERN NSString * const UITextViewTextDidBeginEditingNotification;    //文本开始编辑通知

UIKIT_EXTERN NSString * const UITextViewTextDidChangeNotification;           //文本已经改变通知

UIKIT_EXTERN NSString * const UITextViewTextDidEndEditingNotification;      //文本结束编辑通知

举例如下:

创建文本视图控件实例

  1. // 创建文本视图控件实例
  2. UITextView *textView = [[UITextView alloc]init];

设置文本视图的frame

  1. //设置文本视图的frame
  2. textView.frame = CGRectMake(, , , );

设置文本视图的文本内容

  1. //设置文本视图的文本
  2. textView.text = @"Copyright (c) 2015年 bjsxt. All rights reserved,文本视图控件UITextView,ViewController.m";

设置文本视图的字体大小

  1. //设置文本字体
  2. textView.font = [UIFont systemFontOfSize:];

设置文本可以选中

  1. //设置文本可以选中
  2. textView.selectable = YES;

设置文本可以编辑

  1. //设置文本可以编辑
  2. textView.editable = YES;

给文本视图加圆角边框

  1. //给文本视图加圆角边框
  2. textView.layer.borderColor = [[UIColor colorWithRed:230.0/255.0 green:250.0/255.0 blue:250.0/255.0 alpha:1.0]CGColor];
  3. textView.layer.borderWidth = 3.0;
  4. textView.layer.cornerRadius = 8.0f;
  5. [textView.layer setMasksToBounds:YES];

设置代理

  1. //设置代理
  2. textView.delegate = self;

将控件添加到视图控制器的视图中

  1. //添加控件到视图中
  2. [self.view addSubview:textView];

以下是协议的方法:

  1. #pragma mark -<UITextViewDelegate>
  1. //※点击进入文本将要开始编辑时触发的方法
  2. - (BOOL)textViewShouldBeginEditing:(UITextView *)textView
  3. {
  4. NSLog(@"shouldBeginEditing");
  5. return YES;
  6. }
  7.  
  8. //※离开文本将要结束编辑时触发的方法
  9. - (BOOL)textViewShouldEndEditing:(UITextView *)textView
  10. {
  11. NSLog(@"ShouldEndEditing");
  12. return YES;
  13. }
  14.  
  15. //※文本已经开始编辑时触发的方法
  16. - (void)textViewDidBeginEditing:(UITextView *)textView
  17. {
  18. NSLog(@"DidBeginEditing");
  19. }
  20.  
  21. //※文本已经结束编辑时触发的方法
  22. - (void)textViewDidEndEditing:(UITextView *)textView
  23. {
  24. NSLog(@"DidEndEditing");
  25. }
  26.  
  27. //※文本内容将要发生改变时触发的方法
  28. - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:
  29. (NSString *)text
  30. {
  31. NSLog(@"shouldChangeTextInRange");
  32. return YES;
  33. }
  34.  
  35. //※文本内容已经发生改变时触发的方法
  36. - (void)textViewDidChange:(UITextView *)textView
  37. {
  38. NSLog(@"DidChange");
  39. }
  40.  
  41. //※文本内容已经选中时触发的方法
  42. - (void)textViewDidChangeSelection:(UITextView *)textView
  43. {
  44. NSLog(@"DidChangeSelection");
  45. }

演示截图如下:

内容被隐藏了一部分:                                                     拖动滑动条查看隐藏的部分内容:

        

开始选择文本功能(select)                                                             选中部分文本内容(edit)

       

添加内容(edit)

触发协议方法的执行结果如下:

当按钮点入文本视图时,触发的方法是:

  1. -- ::41.624 文本视图控件UITextView[:] shouldBeginEditing
  2. -- ::41.685 文本视图控件UITextView[:] DidBeginEditing
  3. -- ::41.693 文本视图控件UITextView[:] DidChangeSelection

当编辑文本时(包括敲回车键)时,触发的方法是:

  1. -- ::50.384 文本视图控件UITextView[:] shouldChangeTextInRange
  2. -- ::50.386 文本视图控件UITextView[:] DidChangeSelection
  3. -- ::50.386 文本视图控件UITextView[:] DidChange

当选中文本时,触发的方法是:

  1. -- ::07.836 文本视图控件UITextView[:] DidChangeSelection

iOS:文本视图控件UITextView的详细使用的更多相关文章

  1. iOS:风火轮活动刷新视图控件UIActivityIndicatorView的详细使用

    动态风火轮视图控件:UIActivityIndicatorView   介绍:它是一种类似于风火轮旋转的视图控件,可用作刷新数据时显示加载过程所用,继承自UIView.   类型: typedef N ...

  2. iOS:分段控件UISegmentedControl的详细使用

    分段控件:UISegmentedControl   功能:分段的控制.页面的切换等.   介绍:当用户输入不仅仅是布尔值时,可使用分段控件(UISegmentedControl).分段控件提供一栏按钮 ...

  3. iOS:UITableView表格视图控件

    UITableView:表格视图控件,继承滚动视图控件UIScrollView,(类似于UIPickerView选择器,它主要通过设置数据源代理和行为代理实现协议来设置单元格)    对表格的操作主要 ...

  4. iOS:网页视图控件UIWebView的详解

    网页视图控件:UIWebView 功能:它是继承于UIView的,是一个内置的浏览器控件,以用来浏览从网络下载下来的网页或者本地上加载下来的文档. 枚举: //网页视图导航类型 typedef NS_ ...

  5. iOS:UIImageView图像视图控件

    UIImageView:图像视图控件:    它是UIView的子类,因此也是视图控件,可以用来显示图像.因为它具有帧动画属性和操作方法,因此可以用来制作动画,其实动画就是很短的时间内,执行显示连续的 ...

  6. 从0到1搭建移动App功能自动化测试平台(2):操作iOS应用的控件

    转自:http://debugtalk.com/post/build-app-automated-test-platform-from-0-to-1-Appium-interrogate-iOS-UI ...

  7. 无比迅速敏捷地开发iOS超精美控件

    目录 前言 设计 编码 PaintCode 前言 自从人生第一篇博客<iOS中的预编译指令的初步探究>问世以来 浏览量竟然达到了360多,(路过的大神勿笑!)这些浏览量使我兴奋异常但又令我 ...

  8. iOS基础UI控件介绍-Swift版

    iOS基础UI控件总结 iOS基础控件包括以下几类: 1.继承自NSObject:(暂列为控件) UIColor //颜色 UIImage //图像 2.继承自UIView: 只能相应手势UIGest ...

  9. iOS开发--UIKit控件之UISearchBar(搜索栏)

    今天因为需求原因,需要用到搜索控件:之前一直没有用到过这个控件,所以去百度了一下,找到一篇可以说很齐全的资料,感谢这位作者. 然而,我并没有找到可以更改字体大小的属性或方法,希望有知道的告诉我一声,谢 ...

随机推荐

  1. linux命令(42):wc命令

    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...

  2. LeetCode解题报告—— 2 Keys Keyboard & Longest Palindromic Substring & ZigZag Conversion

    1. Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You ...

  3. BestCoder Round #86 二,三题题解(尺取法)

    第一题太水,跳过了. NanoApe Loves Sequence题目描述:退役狗 NanoApe 滚回去学文化课啦! 在数学课上,NanoApe 心痒痒又玩起了数列.他在纸上随便写了一个长度为 nn ...

  4. hdu 1243(LCS变形)

    反恐训练营 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  5. Two Sum ——经典的哈希表的题

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  6. Sql Server中常用函数replicate

    SQL常用函数之三 REPLICATE () 按指定次数重复字符表达式. 语法 REPLICATE ( character_expression, integer_expression) 参数 cha ...

  7. CentOS7安装私有gitlab

    1.安装依赖包 yum install -y curl policycoreutils openssh-server openssh-clients postfix systemctl start p ...

  8. ORACLE数据库创建动态表

    最近公司一个项目代码里的定时任务无法执行,查验代码良久,奈何代码过于老旧,开发人员换了一茬又一茬,现在都无法理清,故无奈只好到数据库里重新写存过,配置定时任务. 在写存过时,由于检测及安全性能要求,需 ...

  9. 携带结果的任务 Callable 与 Future

    Executor框架使用Runnable作为其基本任务表示形式.Runnable是一种有很大局限的抽象,它不能返回一个值或者抛出一个受检查的异常. 但是许多任务实际上都是存在延迟的计算,比如执行数据库 ...

  10. Luogu P2590 树的统计(树链剖分+线段树)

    题意 原文很清楚了 题解 重链剖分模板题,用线段树维护即可. #include <cstdio> #include <cstring> #include <algorit ...