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

时间:2014-08-13 00:40:06

标签: ios objective-c xcode

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

以下文字为例:

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

用户可以选择“美国州”,并获取有关美国各州的信息。

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

感谢。

2 个答案:

答案 0 :(得分:3)

可能有更好的方法,但我知道有一种方法可以做你要求的。

  1. 使用您想要显示的文字
  2. 创建一个NSMutableAttributedString
  3. 确定要单击的字符范围并使用setAttributes:rangeSet,添加NSLinkAttributeName属性,其值为可用于标识所单击区域的字符串。
  4. 创建一个UITextView并将attributedString属性设置为上面的字符串
  5. 将某个对象设置为UITextView的委托
  6. 覆盖textView:shouldInteractWithURL:inRange:方法。在这里返回NO,但是使用从之前使用的字符串创建的URL执行您想要的操作。
  7. 这是代码部分。我将把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;
    }
    

答案 1 :(得分:0)

你可以在Xcode中完成。您将需要在故事板中创建segue并为segue添加标识符。然后在其中一个UITextViewDelegate方法中,您可以检查文本视图中的文本。如果匹配,您可以使用-performSegueWithIdentifier:sender:以编程方式调用segue。或者,您可以使用-segueWithIdentifier:source:destination:performHandler:以编程方式创建整个segue。