ios - 在 UITextView 中选择特定文本以触发 segue

标签 ios objective-c xcode

我正在尝试向我的应用程序添加一个功能,用户可以在其中选择我预先指定的文本,以便触发一个 segue 并获得有关用户选择内容的解释/信息。

下面的文字是一个例子:

夏威夷是 50 个“美国州”中最近的一个,并于 1959 年 8 月 21 日加入联邦。

用户可以选择“美国各州”,然后将获得有关美国各州的信息。

那么我可以用 Xcode 做到这一点,还是必须使用一些 html 编辑应用程序?如果是这样,哪里是开始学习如何做这样的事情的好地方(在线或书籍)?

谢谢。

最佳答案

可能有更好的方法,但我知道有一种方法可以满足您的要求。

  1. 用你想要显示的文本创建一个 NSMutableAttributedString
  2. 确定您希望可点击的字符范围,并使用 setAttributes:rangeSet 添加 NSLinkAttributeName 属性,其值为可用于标识点击区域的字符串。
  3. 创建一个 UITextView 并将 attributedString 属性设置为上面的字符串
  4. 将一些对象设置为 UITextView 的委托(delegate)
  5. 重写 textView:shouldInteractWithURL:inRange: 方法。此处返回 NO,但对 URL 执行您想要的操作,该 URL 从您之前使用的字符串创建。

这是代码部分。我将把 UITextView 的创建留给你。

-(void)viewDidLoad
{
    [super viewDidLoad];

    NSMutableAttributedString *attString = self.textView.attributedText.mutableCopy;
    [attString setAttributes:@{NSLinkAttributeName:@"123"} range:NSMakeRange(0, 10)];
    self.textView.attributedText = attString;
    self.textView.delegate = self;
}

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
{
    NSLog(@"%@", URL);
    return NO;
}

关于ios - 在 UITextView 中选择特定文本以触发 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25276355/

相关文章:

ios - View Controller 中的顶部栏未显示

Objective-C - 将流式数据传递到音频队列

ios - SceneKit 中的 COLLADA 转换

ios - SwiftUI 将 VStack/HStacks 对齐到一个表中

iphone - IOS 下视频无法播放

ios - 自定义设置按钮背景色ios

objective-c - UIBezierPath 橡皮擦

iphone - 用于 XCode 调试的监 window 口

iOS 12,Xcode 10 : UIView setNeedsDisplay(_:) seems to be broken

ios - C 风格的 for 语句已弃用,将来会被删除