UItextInput-Protocol
2024-08-27 03:34:47
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
。如果这个点在第二行行位,而第二行只有一个字,可能定位到上面一行的最末。。
最新文章
- 装个centos虚拟机之设置桥接网络
- 【leetcode❤python】198. House Robber
- 系统集成之用户统一登录( LDAP + wso2 Identity Server)
- VMware系统运维(六)VMware vSphere Web Client安装
- Windows Media Player安装了却不能播放网页上的视频
- docker私有仓库
- EventBus 事件总线 原理
- 通过 sp_configure 进行 Database Mail 配置
- docker学习笔记1:docke环境的查看
- Android 记录的(MediaRecorder)而播放(MediaPlayer)
- AWK----awk与shell交互
- 关于adb is down 的两个解决方案
- 如何禁止chrome浏览器http自动转成https 【转】
- RSA算法加解密
- js/php判断移动端还是PC端
- 用寄快递模拟数据在网络中的传送过程,发送一个ip数据报到接受这个ip数据报经历的过程
- Vue.js 子组件的异步加载及其生命周期控制
- day8.python文件操作
- Python 练习:简单的购物车
- [转] 通过jQuery Ajax使用FormData对象上传文件
热门文章
- 《Android Studio实用指南》7.1 AndroidStudio代码检查工具概述
- 无法修改SQL Server 服务名称
- 对称二叉树 · symmetric binary tree
- ServiceStack.Redis泛型存储后getById问题
- [c++] final override keyword
- [SoapUI] 按照 Test Step Type 获取所有满足条件的 Test Step
- SSL与TLS有什么区别
- 实践作业3:白盒测试----第三次小组会DAY8
- Python - excel 详解
- [GO]结构体的比较和赋值