有时候产品有这种需求:用户点击输入框上已经输入的文字,点击到某一个字符上,可以选中当前字符,并且可以拉伸缩小选择框,然后编辑或者删除字符;但是UITextField输入框,系统默认会给一个推荐的选中逻辑,特别是没有规律的英文数字之类的,当用户点击时,要么不能选中,要么全选,非常不符合用户的实际需求;解决办法是,修改系统的推荐选中规则,改为自己想要的选中规则,点击字符即选中,选中之后就会出现编辑框,方便用户拉伸缩小编辑文字;不多说,代码如下:
自定义iOS DBTextField继承系统UITextField控件:
.h文件
#import
NS_ASSUME_NONNULL_BEGIN
@interface DBTextField : UITextField
@end
NS_ASSUME_NONNULL_END
.m 文件
#import "DBTextField.h"
@implementation DBTextField
- (UIView*)hitTest:(CGPoint)pointwithEvent:(UIEvent*)event {
//方式一
NSLog(@"点击位置 === %f",point.x);
UITextRange*recommendedRange = [selfcharacterRangeAtPoint:point];
NSLog(@"推荐位置 === %@",recommendedRange.start);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.selectedTextRange= recommendedRange;
});
return[superhitTest:pointwithEvent:event];
}
@end
使用时,只需要将想要实现这种效果的输入框,改成DBTextField就可以了,非常方便
网友评论