当前位置: 首页 > 知识库问答 >
问题:

检测iOS中UITextView中属性文本的抽头

百里承业
2023-03-14

我知道现在可以在字符串中创建自定义属性了(尽管我还没有这样做),也许这些属性对于检测是否有一个神奇的单词被点击是有用的?无论如何,我仍然不知道如何拦截那个窃听,并检测到窃听发生在哪个单词上。

请注意,不需要iOS6兼容性。

共有1个答案

楚俊迈
2023-03-14

我只是想多帮助别人一点。根据Shmidt的回答,可以完全按照我在最初问题中提出的要求来做。

1)创建一个属性化字符串,该字符串具有应用于可点击单词的自定义属性。

NSAttributedString* attributedString = [[NSAttributedString alloc] initWithString:@"a clickable word" attributes:@{ @"myCustomTag" : @(YES) }];
[paragraph appendAttributedString:attributedString];

2)创建UITextView以显示字符串,并向其添加UITapGestureRecognizer。然后处理轻击:

- (void)textTapped:(UITapGestureRecognizer *)recognizer
{
    UITextView *textView = (UITextView *)recognizer.view;

    // Location of the tap in text-container coordinates

    NSLayoutManager *layoutManager = textView.layoutManager;
    CGPoint location = [recognizer locationInView:textView];
    location.x -= textView.textContainerInset.left;
    location.y -= textView.textContainerInset.top;

    // Find the character that's been tapped on

    NSUInteger characterIndex;
    characterIndex = [layoutManager characterIndexForPoint:location
                                           inTextContainer:textView.textContainer
                  fractionOfDistanceBetweenInsertionPoints:NULL];

    if (characterIndex < textView.textStorage.length) {

        NSRange range;
        id value = [textView.attributedText attribute:@"myCustomTag" atIndex:characterIndex effectiveRange:&range];

        // Handle as required...

        NSLog(@"%@, %d, %d", value, range.location, range.length);

    }
}
 类似资料:
  • 本文向大家介绍iOS 设置属性文本,包括了iOS 设置属性文本的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 在Python中使用抽象属性实现以下Scala代码的最短/最优雅的方法是什么? Scala编译器强制使用的子类来定义“路径”。子类如下所示: 问题答案: Python有一个内置的异常,尽管直到运行时您都不会遇到该异常。

  • 我有一个带有子组件的组件。 在时间轴组件中,我有这些属性: 如何检查何时从时间轴组件对属性进行更改?每当编辑值发生更改时,我都需要发出该值。 我应该为编辑属性使用一个setter,然后从那里发出吗? 或者有其他方法吗?

  • 如果你是根据题目来回答这个问题的,但对蒙古语不感兴趣,你可能会寻找这个问题 Swift:如何旋转UIButton和UILabel的文本? 我一直在学习Swift,以便为传统蒙古语开发iOS应用程序。问题是传统蒙古语是从上到下、从左到右垂直书写的。我的问题是,如何在垂直显示文本的同时仍进行换行工作? 如果你跟我呆一会儿,我会尽量把问题解释得更清楚。下面是我想要实现的文本视图的图片。如果外文脚本让你不

  • 问题 在解析获得一个Document实例对象,并查找到一些元素之后,你希望取得在这些元素中的数据。 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用Element.text()方法 对于要取得元素或属性中的HTML内容,可以使用Element.html(), 或Node.outerHtml()方法 示例: String html =

  • 如何在中添加占位符,类似于在中为设置的占位符?