iOS TextField 获取光标的位置
来源:互联网 发布:纸箱厂专业软件 编辑:程序博客网 时间:2024/05/21 14:25
最近在做一个项目的时候,发现没有获取光标的方法。进过研究后,出来分享给大家:
1、新建一个工程,我使用的Xcode 7.2 也就是 iOS9.2,托转一个TextField;
2、新建一个类别,对TextFIeld进行一个扩展,也就是新建一个类别;
这是.h文件
#import <UIKit/UIKit.h>@interface UITextField (ExtentRange)- (NSRange)selectedRange;- (void)setSelectedRange:(NSRange)range;@end
然后.m文件:
#import "UITextField+ExtentRange.h"@implementation UITextField (ExtentRange)- (NSRange) selectedRange{ UITextPosition* beginning = self.beginningOfDocument; UITextRange* selectedRange = self.selectedTextRange; UITextPosition* selectionStart = selectedRange.start; UITextPosition* selectionEnd = selectedRange.end; const NSInteger location = [self offsetFromPosition:beginning toPosition:selectionStart]; const NSInteger length = [self offsetFromPosition:selectionStart toPosition:selectionEnd]; return NSMakeRange(location, length);}- (void) setSelectedRange:(NSRange) range{ UITextPosition* beginning = self.beginningOfDocument; UITextPosition* startPosition = [self positionFromPosition:beginning offset:range.location]; UITextPosition* endPosition = [self positionFromPosition:beginning offset:range.location + range.length]; UITextRange* selectionRange = [self textRangeFromPosition:startPosition toPosition:endPosition]; [self setSelectedTextRange:selectionRange];}@end
大家也看到了,就是基本上一个重写的Set 和 Get 方法,值得一提的是这里所定义的
selectedRange变量,它在UITextView是有这个属性的,但是在UItextField中确实没有的。
那么我们现在来对这个方法进行测试:
#import "ViewController.h"#import "UITextField+ExtentRange.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UITextField *textField;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; UITextField *tmpTextField = [[UITextField alloc]initWithFrame:CGRectMake(30, 30, 100, 40)]; [self.view addSubview:tmpTextField]; tmpTextField.text = @"121"; [tmpTextField becomeFirstResponder]; NSRange range = [tmpTextField selectedRange]; NSLog(@"%lu and %lu", (unsigned long)range.location, (unsigned long)range.length); self.textField.text = @"ddwa"; NSLog(@"localhost is %lu, length is %lu", (unsigned long)[self.textField selectedRange].location, (unsigned long)[self.textField selectedRange].length); [self.textField setSelectedRange:NSMakeRange(0, 1)]; NSLog(@"localhost is %lu, length is %lu", (unsigned long)[self.textField selectedRange].location, (unsigned long)[self.textField selectedRange].length); [self.textField addTarget:self action:@selector(didChangeWithTextField:) forControlEvents:UIControlEventEditingChanged];}- (void)didChangeWithTextField:(UITextField *)textField{ NSRange range = textField.selectedRange; NSLog(@"%lu and %lu", (unsigned long)range.location, (unsigned long)range.length); NSLog(@" ... "); }
可以看到 我在UIVIewDidLoad中写的变量,所得到的坐标位置都是(0 , 0);
然后我对这个textField添加了一个当值改变的一个监听,每次输入数值的时候,会有看到打印出来数据的变化。
2 0
- iOS TextField 获取光标的位置
- iOS.swift textfield中光标初始位置
- 自定义键盘中的删除键TextField上光标位置的获取以及设置光标的位子
- IOS/UITextField 光标的位置设置获取
- 获取光标的位置
- iOS设置TextField的placeholder的颜色,位置,字体,光标颜色
- iOS计算textField的光标偏移量
- iOS中textField光标下移的解决方案
- 获取 Textarea 的光标位置
- 获取 Textarea 的光标位置
- 获取 Textarea 的光标位置
- 获取EditText的光标位置
- 获取 UITextView 的光标位置
- H5获取光标的位置
- JavaScript获取光标的位置
- 怎样把光标定位到TextField文本的末尾位置
- ios设置TextField光标颜色
- 获取 Textarea 的光标位置 【转】
- Linux常用命令(整理)
- NSUserDefault(沙盒)
- Visual Studio 编译错误【error C4996: 'scanf': This function or variable may be unsafe. 】的解决方案
- 笔试题目总结之四——各种排序算法
- 内部类实现多继承和封装性
- iOS TextField 获取光标的位置
- void 和void*的详解
- ssize_t和size_t详解
- 安卓日记——sqlite用法
- GAMIT g-文件下载
- udp客户端的编程(极简版)
- 8天学通MongoDB——第三天 细说高级操作
- 网络通信
- web2.0 用express框架写一个signin页面(挖坑待填)