UItextInput-Protocol
UItextInput是一个protocol,一般来说,文字处理的控件都要遵守这个协议。如UITextField,UITextView。下面介绍一些文字处理的基本概念。
- marked text
对于多步骤(multistage)的文字输入来说,有一些文字是已经输入在文本框里,却还没有点击确认,这些文字叫做marked text。中文有,日文也比较常见。

 UITextPosition和UITextRange遵守
UITextInput协议的类都要创建这两个类的子类。为什么不用NSRange和NSInteger呢。用来表示文字的位置和范围。如何转化
NSRange和NSInteger?- UITextPosition to nsinteger
 
func offset(from: UITextPosition, to toPosition: UITextPosition) -> Int
- UITextPosition to UITextRange
 
func textRange(from fromPosition: UITextPosition, to toPosition: UITextPosition) -> UITextRange?
- nsinteger to UITextPosition
 
NSInteger startOffset = [tv offsetFromPosition:tv.beginningOfDocument toPosition:start];
坐标位置和UITextRange的转换
func characterRange(at point: CGPoint) -> UITextRange?
根据坐标系中点的位置,返回一个包含了点所处的character的UITextRange。为啥不是一个UITextPosition,因为一个character会占据多个字符宽度,如emoji表情。
如果那个位置没有文字,返回nil。

func closestPosition(to point: CGPoint) -> UITextPosition?
根据点来找到距离这个点最近的而一个UITextPosition。如果这个点在第二行行位,而第二行只有一个字,可能定位到上面一行的最末。。
UItextInput-Protocol的更多相关文章
- [New learn] UIKit 框架类
		
NSObject NSObject is the root class of most Objective-C class hierarchies. NSDataAsset The NSDataAss ...
 - 学习笔记:URL Protocol在浏览器中打开本地应用程序
		
看到阿里的网站上可以通过点击卖家的旺旺图标从而调用本地的阿里旺旺程序,而且还可以传递当前浏览者需要咨询的商品.这是怎么实现的呢?是通过URLProtocol来完成. 原理还没有太清楚,即在系统里注册一 ...
 - Protocol Buffer搭建及示例
		
本文来源:http://www.tanhao.me/code/150911.html/ Protocol Buffer(简称Protobuf或PB)是由Google推出的一种数据交换格式,与传统的XM ...
 - 从零开始山寨Caffe·伍:Protocol Buffer简易指南
		
你为Class外访问private对象而苦恼嘛?你为设计序列化格式而头疼嘛? ——欢迎体验Google Protocol Buffer 面向对象之封装性 历史遗留问题 面向对象中最矛盾的一个特性,就是 ...
 - oracle plsql 无法连接 报 ORA-12560: TNS:protocol adapter error
		
ORA-12560: TNS:protocol adapter error 添加一个环境变量,名为TNS_ADMIN,值为 tnsnames.ora 文件所在路径.比如我的本机为:D:/instant ...
 - 窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用
		
协议与委托代理回调在之前的博客中也是经常提到和用到的在<Objective-C中的委托(代理)模式>和<iOS开发之窥探UICollectionViewController(四) - ...
 - ORA-12516:TNS:listener could not find available handler with matching protocol stack
		
应用程序连接测试数据库时报ORA-12516:TNS:listener could not find available handler with matching protocol stack 检查 ...
 - Serial Communication Protocol Design Hints And Reference
		
前面转载的几篇文章详细介绍了UART.RS-232和RS-485的相关内容,可以知道,串口通信的双方在硬件层面需要约定如波特率.数据位.校验位和停止位等属性,才可以正常收发数据.实际项目中使用串口通信 ...
 - [原创翻译]Protocol Buffer Basics: C#
		
Protocol Buffer 基础知识:c# 原文地址:https://developers.google.com/protocol-buffers/docs/csharptutorial ...
 - 让Web API支持Protocol Buffers
		
简介 现在我们Web API项目基本上都是使用的Json作为通信的格式,随着移动互联网的兴起,Web API不仅其他系统可以使用,手机端也可以使用,但是手机端也有相对特殊的地方,网络通信除了wifi, ...
 
随机推荐
- jquery入门 动态调整div大小,使其宽度始终为浏览器宽度
			
有时候我们需要设置宽度为整个浏览器宽度的div,当然我们可以使用相对布局的方式做到这一点,不过我们也可以用jquery来实现. <!doctype html> <html> & ...
 - Html5新瓶装老酒之一--Touch事件处理
			
移动端的应用越来越多的开始采用html5来实现的.Html5有许多新特性需要开发者注意,比如css3,touch事件等等.比如做一个轮播图,分析其实现要领,有三点: 1.图片的轮播效果对应的css 样 ...
 - Powerdesigner逆向工程从mysql生成PDM
			
大家喜欢用powerDesigner进行数据库建模.通常都是先设计出物理模型图,再转换出数据库需要的SQL语句,从而生成数据库.但“powerDesigner逆向工程”就能将数据库逆向转为物理模型图. ...
 - Pygame:编写一个小游戏                                                                                                         标签:               pythonpygame游戏                                            2017-06-20 15:06             103人阅读              评论(0)
			
大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...
 - Luogu 4705 玩游戏
			
看见这个题依稀想起了$5$月月赛时候的事情,到现在仍然它感觉非常神仙. 游戏$k$次价值的期望答案 $$ans_k = \frac{1}{nm}\sum_{i = 1}^{n}\sum_{j = 1} ...
 - git 进阶操作
			
1.blame git blame +文件名,可以查看到某个文件每一行最近一次是由谁编辑修改的.-L 22,33 选项可以制定 2.bisect 开始git bisect: $ git bisec ...
 - Transferring Data Between ASP.NET Web Pages
			
14 July 2012 20:24 http://www.mikesdotnetting.com/article/192/transferring-data-between-asp-net-web- ...
 - CoderForces 687C The Values You Can Make (01背包,DP)
			
题意:给定 n 个硬币和一个值 k,问你在用一些硬币组成面值为 k的这些硬币还能组成多少种其他面值. 析:如果这样说,由这些硬币能组成多少种不同的面值,那么是不是就很熟悉了,这不就是01背包么,这个题 ...
 - Linux-在新买的阿里云服务器上部署Tomcat并支持外网访问的配置(步骤记录)
			
一.首先你得有一台外网上的服务器 华为.腾讯.阿里都有云服务售卖,我这里是在阿里云打折时购买的. 二.使用Xshell和XFTP连接上云服务 当然了,连接工具有很多种,可随意.购买服务器之后,你会收到 ...
 - NIOS II 自定义IP核的静态地址对齐和动态地址对齐
			
如果使用静态地址对齐(每个寄存器在Avalon总线上占4个字节的地址)设置IP使用静态地址对齐的方式为,在hw.tcl脚本里加上一局话:set_interface_property as addres ...
 
			
		
