UItextInput是一个protocol,一般来说,文字处理的控件都要遵守这个协议。如UITextField,UITextView。下面介绍一些文字处理的基本概念。

  1. marked text
    对于多步骤(multistage)的文字输入来说,有一些文字是已经输入在文本框里,却还没有点击确认,这些文字叫做marked text。中文有,日文也比较常见。
  2. UITextPositionUITextRange

    遵守UITextInput协议的类都要创建这两个类的子类。为什么不用NSRangeNSInteger呢。用来表示文字的位置和范围。

    如何转化NSRangeNSInteger?

    • 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];
    
  3. 坐标位置和UITextRange的转换

    • func characterRange(at point: CGPoint) -> UITextRange?
      根据坐标系中点的位置,返回一个包含了点所处的character的UITextRange。为啥不是一个UITextPosition,因为一个character会占据多个字符宽度,如emoji表情。
      如果那个位置没有文字,返回nil。
    • func closestPosition(to point: CGPoint) -> UITextPosition?
      根据点来找到距离这个点最近的而一个UITextPosition。如果这个点在第二行行位,而第二行只有一个字,可能定位到上面一行的最末。。

转载于:https://www.cnblogs.com/huahuahu/p/UItextInputProtocol.html

UItextInput-Protocol相关推荐

  1. Implement a customized pin code input control

    As a iOS engineer, you are asked to collect user's input for a pin code. How can we make it? You can ...

  2. Oracle ORA-03137: TTC protocol internal error : [12333] 故障分析

    程序通过JDBC 连接数据库异常,报 ORA-03137[12333]的错误. 当前程序的JDBC 驱动版本:ojdbc16-11.2.0.1.0.jar 数据库版本: 11.2.0.3 一. Log ...

  3. Protocol Buffers简明教程

    随着微服务架构的流行,RPC框架渐渐地成为服务框架的一个重要部分.在很多RPC的设计中,都采用了高性能的编解码技术,Protocol Buffers就属于其中的佼佼者.Protocol Buffers ...

  4. Google Protocol Buffers介绍

    Google Protocol Buffers(简称Protobuf),是Google的一个开源项目,它是一种结构化数据存储格式,是Google公司内部的混合语言数据标准,是一个用来序列化(将对象的状 ...

  5. 【C++】Google Protocol Buffer(protobuf)详解(一)

    1.简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准, Protocol Buffers 是一种轻便高效的结构化数据存储格式 ...

  6. java报错MalformedURLException: unknown protocol: c

    java报错:MalformedURLException: unknown protocol: c 1. 报错情况: 部分代码: //打开图片path="C:/Users/MyUser/im ...

  7. IPVS: Can't initialize ipvs: Protocol not available解决方法

    经排查发现本地的测试环境磁盘空间满了,造成数据库不能写入数据. 最终的罪魁祸首是日志文件. 由于我们使用的是lvs负载均衡,前端的Keepalived启动之后不能初始化ipvs协议,所以日志在不停的刷 ...

  8. Centos 6.5下一个SNMP简单配置(snmp protocol v3,监控宝)

    Centos 6.5下一个SNMP简单配置(snmp protocol v3.监控宝) jom_ch@2014/7/25 1,安装 >yum -y install net-snmp net-sn ...

  9. 解决报错: MobaXterm X11 proxy: Unsupported authorisation protocol

    此文首发于我的个人博客:解决报错 MobaXterm X11 proxy Unsupported authorisation protocol - zhang0peter的个人博客 今天在使用Moba ...

  10. 【转】iOS开发-Protocol协议及委托代理(Delegate)传值

    原文网址:http://www.cnblogs.com/GarveyCalvin/p/4210828.html 前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来 ...

最新文章

  1. samll note
  2. struts2之请求参数接收
  3. mybatis insert 忽略 联合唯一索引_MySQL实战中,Insert语句的使用心得总结
  4. [转帖]外壳命名空间扩展
  5. 在你的andorid设备上运行netcore (Linux Deploy)
  6. [css] box-sizing常用的属性有哪些?分别有什么作用?
  7. 架构日趋复杂的今天,如何重构数据库和应用边界?
  8. SQL中的join连接
  9. 开源C++项目Google JavaScript引擎V8挑战实录,带你进入V8之旅
  10. SOA安全性解决方案
  11. 完美解决netkeeper 错误代码137
  12. 面向创新设计的汽车外形曲面三维逆向建模
  13. idea自动生成器 生成构造器 get/set方法等
  14. 关于浏览器及其内核以及什么是浏览器兼容性
  15. 移动端自动化任务-AutoJs Pro v9使用教程(一)
  16. 老司机亲自整理的和弦知识让你事半功倍学乐理
  17. service mesh解决的几个问题
  18. EWAHCompressedBitmap数据结构及原理
  19. 西门子_Step7软件仿真方法
  20. C语言求两个正整数的最小公倍数

热门文章

  1. 读书笔记 之《Thinking in Java》(对象、集合、异常)
  2. 记录一次Tomcat内存泄露原因的追溯
  3. 通过代码设置radiobutton不同方位图标的两种方法
  4. Flappy Bird 单机版
  5. linux 0.11根文件系统,构建一个最小Linux根文件系统
  6. 你的Redis集群撑得住吗?
  7. python 边缘计算_OpenEdge首页、文档和下载 - 边缘计算平台 - OSCHINA - 中文开源技术交流社区...
  8. ios 企业签名证书购买_iOS苹果企业签名须知
  9. wav文件头修复_贴唱混音之二——音频修复
  10. delphi中webbrowse控件中模拟点击文本超链接_游戏中lt;控件gt;的思考