参加了一个比赛有一道题是如标题一样,在UITextView上触摸找到该触摸点对应的文字,比赛也可以查资料,当时做的时候就是抱着玩玩的心态试试也没认真做,就没查就去吃饭去了,昨晚下班回去在思考这个问题发现还挺有水平的这道题不简单,自己就试着做了下,还是在Stack Overflow中找到的答案。http://stackoverflow.com/questions/19332283/detecting-taps-on-attributed-text-in-a-uitextview-in-ios

自己也试了试,还挺不错,原本以为ios基本不用学了,看来要学的还有好多好多,真是涨姿势。

下面是我测试的demo记录一下。

    _oxTextView=[[OXTouchTextView alloc]initWithFrame:CGRectMake(, , self.view.bounds.size.width, )];
    _oxTextView.text=@"猿圈是一家互联网技术人才服务平台,专注于技术人才的评测,用代码帮助企业快速识别技术人才:候选人接受线上测试挑战,使用机器自动判卷,编程数据采集,采用先进的技术能力识别算法,精确识别候选人的真实技术能力,形成全面的编程技能评估报告和分析矩阵,将结果反馈给用户和公司,大大节省了时间和精力。除此之外,猿圈自研的Android、iOS在线云端编译引擎,可以支持用户在云端(浏览器中)写代码,在世界处于领先地位。";
    [self.view addSubview:_oxTextView];
#import "OXTouchTextView.h"

@implementation OXTouchTextView

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
    }

    return self;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    //No.1
    //开始写代码,触摸操作开始时,获取当前触摸位置的字符所属的单词。并用UIAlertView显示出来(提示:触摸位置需向下调整10个点,以便与文本元素对齐)
    UITouch *touch =[touches anyObject];
    CGPoint touchPoint =[touch locationInView:self];

    NSInteger characterIndex = [self.layoutManager characterIndexForPoint:touchPoint inTextContainer:self.textContainer fractionOfDistanceBetweenInsertionPoints:NULL];
    if (characterIndex<self.text.length) {
        NSString *s=[self.text substringWithRange:NSMakeRange(characterIndex, )];
        NSLog(@"%@",s);
    }

    //end_code
    [super touchesBegan: touches withEvent: event];
}

@end

测试结果:

触摸UITextView找到该触摸点的文字的更多相关文章

  1. ios实例开发精品文章推荐(8.12)11个处理触摸事件和多点触摸的JS库

    11个处理触摸事件和多点触摸的JS库 触摸屏是现在所有智能手机的标配,还包括各种平板设备,而且很多桌面也慢慢在开始支持触摸操作.要开发支持触摸屏设备的Web应用,我们需要借助浏览器的触摸事件来实现. ...

  2. 手势识别官方教程(8)拦截触摸事件,得到触摸的属性如速度,距离等,控制view展开

    onInterceptTouchEvent可在onTouchEvent()前拦截触摸事件, ViewConfiguration得到触摸的属性如速度,距离等, TouchDelegate控制view展开 ...

  3. <WEB>平板_手机开发_13 个处理触摸事件和多点触摸的JS 库

    触摸屏是现在所有智能手机的标配,还包括各种平板设备,而且很多桌面也慢慢在开始支持触摸操作.要开发支持触摸屏设备的 Web 应用,我们需要借助浏览器的触摸事件来实线. 下图是各种触摸事件说明: 本文我们 ...

  4. js 触摸的Event--获取触摸位置

    继上一篇js原生拖拽之后,现在又来写一下移动端touch列表,获取触摸位置.pc端的event事件,鼠标的位置信息在上一篇,点此进入上一篇. touch有3个事件:touchstart,touchmo ...

  5. ubuntu14.04禁止触摸板和恢复触摸板

    1.使用xinput list查看与触摸板相关的id,以下是本机的输出,没搞清楚为什么是Mouse!!! jello@jello:~$ xinput list⎡ Virtual core pointe ...

  6. 说说iOS中的手势及触摸

    一.响应链 在IOS开发中会遇到各种操作事件,通过程序可以对这些事件做出响应. 首先,当发生事件响应时,必须知道由谁来响应事件.在IOS中,由响应者链来对事件进行响应,所有事件响应的类都是UIResp ...

  7. 第29章 电容触摸屏—触摸画板—零死角玩转STM32-F429系列

    第29章     电容触摸屏—触摸画板 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fir ...

  8. iOS 手势及触摸

    转自:http://justsee.iteye.com/blog/1885538 一.响应链 在IOS开发中会遇到各种操作事件,通过程序可以对这些事件做出响应. 首先,当发生事件响应时,必须知道由谁来 ...

  9. 多点触摸(MT)协议(翻译)

    参考: http://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt 转自:http://www.arm9home.ne ...

随机推荐

  1. 使用ABP框架踩过的坑系列2

    ABP中有很多惯例,如果使用得当,可以事半功倍,如果使用不当,也会有很大的麻烦,是否适当其实还是要看Need需求 ASP.NET Boilerplate (ABP) is an open source ...

  2. 对于equals和==的理解

    很多时候equals和==大家都分不太清楚怎么样来使用,今天小编就来教大家怎么使用 equals比较的是两个变量的值是否相等 而==则比较的是这个变量的内存地址是否相同 打个比方来说 String a ...

  3. 枚举类型内部函数 enumerate

    enumerate()说明enumerate()是python的内置函数enumerate在字典上是枚举.列举的意思对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumera ...

  4. Code Chef TSUM2(动态凸包+点分治)

    题面 传送门 题解 真是毒瘤随机化算法居然一分都不给 首先这种树上的题目一般想到的都是点分 我们考虑如何统计经过当前点的路径的贡献,设当前点\(u\)在序列中是第\(c\)个,那么一条路径的贡献就是 ...

  5. Python 读取大文件的方式

    对于读取容量小的文件,可以使用下面的方法: with open("path", "r") as f: f.read() 但是如果文件容量很大,高达几个G或者十几 ...

  6. 红黑树的实现——c++

    红黑树介绍参考上一篇. 1. 基本定义 enum RBTColor{RED, BLACK}; template <class T> class RBTNode{ public: RBTCo ...

  7. js处理想要得到数据结构

    例1 var arr = [ { date: "2018-01-10", time: "11:00" }, { date: "2018-01-10&q ...

  8. Zookeeper数据存储总结

    Zookeeper快照文件和事物操作文件以文件的形式存储在硬盘上,以快照文件为主,日志文件为辅.因为当对内存数据进行变更的时候,会保证将事务操作记入log日志,而snapshot只是内存某一个时刻影像 ...

  9. [Auto Testing] 工具准备:Selenium 与 ChromeDriver

    <留存> Selenium http://selenium-release.storage.googleapis.com/index.html https://www.seleniumhq ...

  10. 自己实现简单的RSA秘钥生成与加解密(Java )

    最近在学习PKI,顺便接触了一些加密算法.对RSA着重研究了一下,自己也写了一个简单的实现RSA算法的Demo,包括公.私钥生成,加解密的实现.虽然比较简单,但是也大概囊括了RSA加解密的核心思想与流 ...