OC 基础 UITextView
一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。
属性
属性 | 注释 |
---|---|
frame | 约束 |
text | 设置默认文本 |
textColor | 设置文本颜色 |
textAlignment | 设置对齐方式 |
font | 设置文本样式和大小 |
secureTextEntry | 设置编辑框中的内容密码显示 |
keyboardType | 设置键盘上的样式 |
returnKeyType | 设置键盘上return键的类型 |
attributedText | 富文本 |
layer.borderColor | 设置边框颜色 |
layer.borderWidth | 设置边框大小 |
textContainerInset | 设置边框与内容的间距 |
allowsEditingTextAttributes | 是否可编辑 |
selectable | 是否可选中 |
delegate | 代理 |
使用
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(50, 100, 250, 150)];
[self.view addSubview:textView];
//设置默认文本
textView.text = @"请输入文本内容";
//设置文本颜色
textView.textColor = [UIColor redColor];
//设置对齐方式
textView.textAlignment = NSTextAlignmentCenter;
//设置文本样式和大小
textView.font = [UIFont fontWithName:@"wawati sc" size:20];
//设置编辑框中的内容密码显示
textView.secureTextEntry = YES;
//设置键盘上的样式
textView.keyboardType = UIKeyboardTypeNamePhonePad;
//设置键盘上return键的类型
/**
UIReturnKeyDefault,
UIReturnKeyGo,
UIReturnKeyGoogle,
UIReturnKeyJoin,
UIReturnKeyNext,
UIReturnKeyRoute,
UIReturnKeySearch,
UIReturnKeySend,
UIReturnKeyYahoo,
UIReturnKeyDone,
UIReturnKeyEmergencyCall,
UIReturnKeyContinue,
*/
textView.returnKeyType = UIReturnKeySearch;//可以使用富文本
//textView.attributedText//设置边框颜色
textView.layer.borderColor = UIColor.redColor.CGColor;
//设置边框大小
textView.layer.borderWidth = 2.0;
//设置边框与内容的间距
textView.textContainerInset = UIEdgeInsetsMake(20, 20, 20, 20);
//是否可编辑
textView.allowsEditingTextAttributes = NO;
//是否可选中
textView.selectable = YES;//代理
textView.delegate = self;#pragma mark - 开始编辑
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{return YES;
}#pragma mark - 结束编辑
- (BOOL)textViewShouldEndEditing:(UITextView *)textView{return YES;
}#pragma mark - 已经编辑
- (void)textViewDidBeginEditing:(UITextView *)textView{}#pragma mark - 已经结束编辑-1
- (void)textViewDidEndEditing:(UITextView *)textView{}#pragma mark - 正在发生改变
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{return YES;
}#pragma mark - 已经发生改变-1
- (void)textViewDidChange:(UITextView *)textView{}#pragma mark - 已经发生改变-2
- (void)textViewDidChangeSelection:(UITextView *)textView{}#pragma mark - 捕获点击的URL
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction API_AVAILABLE(ios(10.0)){return YES;
}- (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction API_AVAILABLE(ios(10.0)){return YES;
}//取消编辑
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
需求
富文本效果
常用于登录页面的隐私协议
UI设置源码
lazy var termsTitleView: UITextView = {let chargeProtocol = "Terms of Use"let protocolTips = "I confirm to have fully read, understood and accepted the \(chargeProtocol) that govem my use of this App."let protocolRange = (protocolTips as NSString).range(of: chargeProtocol)let titleView = UITextView()titleView.backgroundColor = .cleartitleView.textContainerInset = .zerotitleView.isEditable = falsetitleView.delegate = selflet paragraphStyle = NSMutableParagraphStyle()let rechargeProtocol = "https://api.naxosmusiclibrary.com/mobile/termsconditions?site=nml"let url = rechargeProtocol.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlFragmentAllowed)let attributedString = NSMutableAttributedString(string: protocolTips, attributes: [.font: UIFont.systemFont(ofSize: 14, weight: .medium),.foregroundColor: UIColor.white,.paragraphStyle: paragraphStyle])attributedString.addAttribute(.link, value: url as Any, range: protocolRange)titleView.linkTextAttributes = [.foregroundColor: UIColor(hex: "#63e7ff")] //这里重点是设置可点击文字颜色titleView.attributedText = attributedStringreturn titleView
}()
代理源码
extension CreatAccountViewController: UITextViewDelegate {func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {switch textView {case termsTitleView:dumpToVC(url: BaseUrl + TermsOfUseURL, title: TermsOfUse, isSelected: termsOfUsBtn.isSelected)case privacyTitleView:dumpToVC(url: BaseUrl + PolicyUrl, title: Privacy8CookiePolicy, isSelected: privacyBtn.isSelected)default:break}return false}
}
注意:在开发过程,上面的例子中,textview的高度要大于文本内容的高度,不然触摸会出现弹簧效果
OC 基础 UITextView相关推荐
- OC基础第四讲--字符串、数组、字典、集合的常用方法
OC基础第四讲--字符串.数组.字典.集合的常用方法 字符串.数组.字典.集合有可变和不可变之分.以字符串为例,不可变字符串本身值不能改变,必须要用相应类型来接收返回值:而可变字符串调用相应地方法后, ...
- OC基础回想(十二)协议
在OC基础(十一)中我们讨论了类别和非正式协议的奇异之处.在使用非正式协议时.能够仅仅实现你想要获得响应的方法.也不必在对象中声明不论什么内容来表示该对象可用作托付对象. 全部这些任务能够用最少的代码 ...
- OC基础 代理和协议
OC基础 代理和协议 1.协议 (1)oc语言中得协议:一组方法列表,不需要我们自己实现,由遵守协议的类来实现协议所定制的方法. (2)协议的使用步骤:制定协议-->遵守协议-->实现协议 ...
- OC基础1:一些基本概念
"OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.关于类方法和实例方法: (1).类方法 ...
- OC基础15:内存管理和自动引用计数
"OC基础"这个分类的文章是我在自学Stephen G.Kochan的<Objective-C程序设计第6版>过程中的笔记. 1.什么是ARC? (1).ARC全名为A ...
- oc基础 不可变字符串的创建和使用
oc基础 不可变字符串的创建和使用 简介:下面都是字符串基本用法. 1.字符串的创建 //创建oc常量字符串NSString *str=@"hello world!";NSLog ...
- iOS开发面试知识整理 – OC基础 (二)
iOS | 面试知识整理 – OC基础 (二) 1.C和 OC 如何混编 xcode可以识别一下几种扩展名文件: .m文件,可以编写 OC语言 和 C 语言代码 .cpp: 只能识别C++ 或者C语言 ...
- OC基础学习 调用方式
OC基础学习 调用方式 调用方法: C++里,送一个消息给对象(或者说调用一个方法)的语法如下: obj.method(argument); Objective-C则写成: [obj method: ...
- iOS战记 ----OC基础语法之战(一)
iOS战记 ----OC基础语法之战(一) 一个机械设计者的转行之战. 火车一个年轻的程序员和一个项目经理登上了一列在山里行驶的火车,他们发现列车上几乎都坐满了,只有两个在一起的空位,这个空位的对面 ...
最新文章
- WebAssembly 浏览器中运行c/c++模块
- .Net Core应用框架Util介绍(一)
- RMQ with Shifts
- 图片处理应用:固定容器缩略图实现
- TensorFlow by Google神经网络深度学习的 Hello World Machine Learning Foundations: Ep #1 - What is ML?
- mysql数据库攻击与防御pdf_SQL注入攻击与防御 中文PDF清晰扫描版(38.6M)
- 51学习第四天--.跟着郭老师学:程序逐渐加入模块化练习--1从流水灯1s闪烁流动--2再加数码管1~F--3.显示数码管六个灯依次显示123456--再逐渐的加入各种功能,一步一步,可训练思维!
- minecraft pythonapl_Minecraft API
- 小小摩尔福斯之网络侦探
- 【原创】JS 数字转换成英文写法(包含小数)
- 【沧海拾昧】微机原理:存储器系统
- 【C++】促销商品的折扣计算
- 笔记-15 网络编程入门 UDP通信程序 TCP通信程序 练习
- 户口从海峡人才迁入到厦门人才
- Arduino动手做(48)---三轴ADXL345模块
- 落实等级保护工作的意义简单说明
- 【一起学Java第四期】BMI体重指数计算器
- 世界顶级食材——挑动你的食欲
- 飞飞cms模板,飞飞cms自适应模板,飞飞cms影视模板
- 议题征集倒计时|Pulsar Summit Asia 2021 议题征集截至 9 月 30 日