iOS-调节UITextField和UITextView的光标位置

2024-01-31 07:48

本文主要是介绍iOS-调节UITextField和UITextView的光标位置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

有时候需要这样一个需求,就是让textField的光标处于开始位置,而且开始的时候textField里面是有内容的,比如回复评论时,会把评论的内容和作者放在后面,然后在前面写自己的回复内容。实现起来也简单,两种方法,一种是创建一个类别,一个是直接光标位置属性改变。
方法一:创建一个类别UITextField (GuangBiao)
.h文件内容写三个方法

- (NSInteger)curOffset;

- (void)makeOffset:(NSInteger)offset;

- (void)makeOffsetFromBeginning:(NSInteger)offset;

.m文件内容

- (NSInteger)curOffset{// 基于文首计算出到光标的偏移数值。return [self offsetFromPosition:self.beginningOfDocument toPosition:self.selectedTextRange.start];}- (void)makeOffset:(NSInteger)offset{// 实现原理是先获取一个基于文尾的偏移,然后加上要施加的偏移,再重新根据文尾计算位置,最后利用选取来实现光标定位。UITextRange *selectedRange = [self selectedTextRange];NSInteger currentOffset = [self offsetFromPosition:self.endOfDocument toPosition:selectedRange.end];currentOffset += offset;UITextPosition *newPos = [self positionFromPosition:self.endOfDocument offset:currentOffset];self.selectedTextRange = [self textRangeFromPosition:newPos toPosition:newPos];}- (void)makeOffsetFromBeginning:(NSInteger)offset{// 先把光标移动到文首,然后再调用上面实现的偏移函数。UITextPosition *begin = self.beginningOfDocument;UITextPosition *start = [self positionFromPosition:begin offset:0];UITextRange *range = [self textRangeFromPosition:start toPosition:start];[self setSelectedTextRange:range];[self makeOffset:offset];}
   self.TF1.text = @"我的院子,你的在哪里";self.TF1.delegate = self;[self.TF1 becomeFirstResponder];[self.TF1 addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];

在textField代理的方法内:

- (void)textFieldDidBeginEditing:(UITextField *)textField{//自己调整距离开始位置的数值[self.TF1 makeOffsetFromBeginning:0];
}

这样就已经实现了,如果想要光标一直处于开始的位置,再加上下面方法:

- (void)textFieldChanged:(UITextField *)textField{        [self.TF1 makeOffsetFromBeginning:0];
}

方法二:直接代码搞定,还是写在上面的代理方法中,代码如下:

UITextRange * range = textField.selectedTextRange;
UITextPosition * start = [textField positionFromPosition:range.start inDirection:UITextLayoutDirectionLeft offset:textField.text.length];
if (start) {[textField setSelectedTextRange:[textField textRangeFromPosition:start toPosition:start]];
}

这篇关于iOS-调节UITextField和UITextView的光标位置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/663044

相关文章

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

Linux Centos 迁移Mysql 数据位置

转自:http://www.tuicool.com/articles/zmqIn2 由于业务量增加导致安装在系统盘(20G)磁盘空间被占满了, 现在进行数据库的迁移. Mysql 是通过 yum 安装的. Centos6.5Mysql5.1 yum 安装的 mysql 服务 查看 mysql 的安装路径 执行查询 SQL show variables like

PDFQFZ高效定制:印章位置、大小随心所欲

前言 在科技编织的快节奏时代,我们不仅追求速度,更追求质量,让每一分努力都转化为生活的甜蜜果实——正是在这样的背景下,一款名为PDFQFZ-PDF的实用软件应运而生,它以其独特的功能和高效的处理能力,在PDF文档处理领域脱颖而出。 它的开发,源自于对现代办公效率提升的迫切需求。在数字化办公日益普及的今天,PDF作为一种跨平台、不易被篡改的文档格式,被广泛应用于合同签署、报告提交、证书打印等各个

iOS剪贴板同步到Windows剪贴板(无需安装软件的方案)

摘要 剪贴板同步能够提高很多的效率,免去复制、发送、复制、粘贴的步骤,只需要在手机上复制,就可以直接在电脑上 ctrl+v 粘贴,这方面在 Apple 设备中是做的非常好的,Apple 设备之间的剪贴板同步功能(Universal Clipboard)确实非常方便,它可以在 iPhone、iPad 和 Mac 之间无缝传输剪贴板内容,从而大大提高工作效率。 但是,iPhone 如何和 Wind

iOS项目发布提交出现invalid code signing entitlements错误。

1、进入开发者账号,选择App IDs,找到自己项目对应的AppId,点击进去编辑, 2、看下错误提示出现  --Specifically, value "CVYZ6723728.*" for key "com.apple.developer.ubiquity-container-identifiers" in XX is not supported.-- 这样的错误提示 将ubiquity

我的第一次份实习工作-iOS实习生-第三个月

第三个月 这个月有一个考核项目,是一个电子书阅读器,组长说很重要,是我的实习考核项目。 我的项目XTReader,这是我参考网上的一些代码,和模仿咪咕阅读做的,功能还不完善,数据的部分是用聚合数据做的。要收费的。   还有阅读页面,基本功能实现了一下。使用了autolayout,自适应布局,也是第一次用网络,第一次用数据库,第一次用自动布局。还有很多不足。 做了一周多,有个问题一直没

我的第一次份实习工作-iOS实习生-公司使用过的软件

bittorrentsync 素材,文件同步软件 cornerstone svn 软件开发合作 mark man 测量坐标的软件 SQLLite Manager 数据库操作软件