iOStextView的代理方法展示
UITextView的代理方法
- textViewShouldBeginEditing: and textViewDidBeginEditing:
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{
NSLog(@"textViewShouldBeginEditing:");
return YES;
}
- (void)textViewDidBeginEditing:(UITextView *)textView {
NSLog(@"textViewDidBeginEditing:");
textView.backgroundColor = [UIColor greenColor];
}
在text view获得焦点之前会调用textViewShouldBeginEditing: 方法。当text view获得焦点之后,并且已经是第 一响应者(first responder),那么会调用textViewDidBeginEditing: 方法。当text view获得焦点时要想 做一些自己的处理,那么就在这里进行。在
我们的示例中,当text view获得焦点时,是把text view的背景色设置为绿色.
- textViewShouldEndEditing: and textViewDidEndEditing:
在之前的方法中加入以下代码
- (BOOL)textViewShouldEndEditing:(UITextView *)textView{
NSLog(@"textViewShouldEndEditing:");
textView.backgroundColor = [UIColor whiteColor];
return YES;
}
- (void)textViewDidEndEditing:(UITextView *)textView{
NSLog(@"textViewDidEndEditing:");
}
当text view失去焦点之前会调用textViewShouldEndEditing。在示例中,我们使用textViewShouldEndEditing:让背景色返回最初的颜色。
- textView:shouldChangeCharactersInRange:replacementString
在之前的方法中加入以下代码:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
NSCharacterSet *doneButtonCharacterSet = [NSCharacterSet newlineCharacterSet];
NSRange replacementTextRange = [text rangeOfCharacterFromSet:doneButtonCharacterSet];
NSUInteger location = replacementTextRange.location;
if (textView.text.length + text.length > 140){
if (location != NSNotFound){
[textView resignFirstResponder];
}
return NO;
} else if (location != NSNotFound){
[textView resignFirstResponder];
return NO;
}
return YES;
}
每次用户通过键盘输入字符时,在字符显示在text view之 前,textView:shouldChangeCharactersInRange:replacementString方法会被调用。这个方法中可以 方便的定位测试用户输入的字符,并且限制用户输入特定的字符。在上面的代码中,我使用done键来隐藏键盘:通过检测看replacement文本中是否包含newLineCharacterSet任意的字符。
如果有一个字符是来自newLineCharacterSet的,那么说明done按钮被按过了,因此应该将键盘隐藏起来。另外,在用户每次输入内容时,还 检测text view当前文本内容的长度,如果大于140个字符,则返回NO,这样text view就可以限制输入140个字符了。
- textViewDidChangeSelection:
在之前的方法中加入以下代码:
- (void)textViewDidChangeSelection:(UITextView *)textView{
NSLog(@"textViewDidChangeSelection:");
}
只有当用户修改了text view中的内容时,textViewDidChange:方法才会被调用。在该方法中,可以对用户修改了text view中 的内容进行验证,以满足自己的一些实际需求。例如,这里有一个应用场景:当text view限制最多可以输入140个字符时,此时,在用户修改文本内容 时,你希望显示出还可以输入多少个字符。那么每次文本内容被用户修改的时候,更新并显示一下剩余可输入的字符个数即可。
- textViewDidChangeSelection:
在之前的方法中加入以下代码:
- (void)textViewDidChangeSelection:(UITextView *)textView{
NSLog(@"textViewDidChangeSelection:");
}
当用户选择text view中的部分内容,或者更改文本选择的范围,或者在text view中粘贴入文本时,函数textViewDidChangeSelection:将会被调用。该方法一般不使用,不过在某些情况下,非常有用。
iOStextView的代理方法展示的更多相关文章
- iOS开发之巧用Block和代理方法结合来传值
好久没写技术博客了,因为996的工作周期已经持续好几个月了.每天晚上回家都没有太多精力学习很多其他的东西,而且很多时候是接着完善工作的项目的模块开发.所以博客停歇了这么久,更新率也低了不少,今天补充一 ...
- UITableView表格视图、UITableView代理方法及应用
一.基本知识点 UITableView表格视图,是一个可以滚动的界面(理解为垂直滚动的UIScrollView),可展示多行数据,没有行数的限制,只能有一列. 使用UITableView: 1.展示信 ...
- WKWebView代理方法解析
一.前言 上一篇文章已经对WKWebView做了一个简单的介绍,主要对它的一些方法和属性做了一个简单的介绍,今天看一下WKWebView的两个协议:WKNavigationDelegate 和 WKU ...
- 通读AFN②--AFN的上传和下载功能分析、SessionTask及相应的session代理方法的使用细节
这一部分主要研究AFN的上传和下载功能,中间涉及到各种NSURLSessionTask的一些创建的解析和HTTPSessionManager对RESTful风格的web应用的支持,同时会穿插一点NSU ...
- UITextField的代理方法:textField:shouldChangeCharactersInRange:replacementString
原文链接:http://www.cnblogs.com/zhanggui/p/6101813.html 这个我在开发的过程中用到的次数最多,因此这里就简单对其进行分析.先看看Command+点击 弹出 ...
- UITableView的常用属性和代理方法
以下是近期总结的关于tableView的一些属性和代理方法,以及一些常见的问题,现汇总如下,今后还会持续更新,请继续关注: tableView 的头部和尾部视图属性: UISwitch *foot ...
- IOS中在自定义控件(非视图控制器)的视图跳转中 代理方法与代码块的比较
//代码块与代替代理的设计方法 我就以在自定义视图中(非视图控制器,不能实现视图控制功能),通过代理和代码块两种方法分别实现视图的跳转,进行对比 首先自定义了一个视图,上面有一个已经注册了得BUtto ...
- iOS开发——网络篇——NSURLSession,下载、上传代理方法,利用NSURLSession断点下载,AFN基本使用,网络检测,NSURLConnection补充
一.NSURLConnection补充 前面提到的NSURLConnection有些知识点需要补充 NSURLConnectionDataDelegate的代理方法有一下几个 - (void)conn ...
- 弃用的异步get和post方法之代理方法
#import "ViewController.h" #import "Header.h" @interface ViewController () <N ...
随机推荐
- Knockout js 绑定 radio 时,当绑定整形的时候,绑定不生效
解决方案: 使用checkedValue和checked 组合,如下代码. <div><input type="radio" name="flavorG ...
- Vladik and cards
Vladik and cards time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- namenode无法启动
查看日志错误信息关键语句: There appears to be a gap in the edit log. We expected txid 44353, but got txid 原因: n ...
- APK安装时的过滤方式:包名白名单、证书认证
1.定义一些全局变量,文件位置: Build.java (frameworks\base\core\java\android\os) /** * 包管理方式名称<br> * whiteli ...
- openstack私有云布署实践【13.2 网络Neutron-compute节点配置(办公网环境)】
所有compute节点 下载安装组件 # yum install openstack-neutron openstack-neutron-linuxbridge ebtables ipset -y ...
- URAL 1525 Path
#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> us ...
- Misha and Palindrome Degree
Misha and Palindrome Degree 题目链接:http://codeforces.com/problemset/problem/501/E 贪心 如果区间[L,R]满足条件,那么区 ...
- excel_VB宏脚本_批量生成点餐宝接受的格式
Attribute VB_Name = "模块1" '作者:landv '开发时间:2015年12月28日18:09:34 '主要功能,为东风路小厨生成农行点餐宝所支持批量导入的格 ...
- C# cookies
谷歌浏览器- 工具---internet选项---常规---浏览历史记录---设置 cookie和网站数据 C:\Documents and Settings\Administrator\Local ...
- python 强制结束线程的坑
网上流传了两种能强制结束线程的错误姿势 第一种:通过setDaemon来结束线程 http://www.cnblogs.com/jefferybest/archive/2011/10/09/22040 ...