0

我添加了一个带有一些文本的标签和指向 ScrollView 的链接,当您点击这些链接(在标签中)时,将调用一个委托方法,显示一个弹出框并显示一些相关信息。

但问题从这里开始,我希望当您点击链接以外的其他任何地方时,弹出框消失。

如果我将 UITapGestureRecognizer 添加到 ScrollView,则不会调用链接的委托方法。

我应该怎么做才能标记处理链接上的点击,而 ScrollView 处理其他点击?

我确实喜欢这样:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped)];
    [self.scrollView addGestureRecognizer:tap];

- (void)tapped
{
    if ([self.storyText.delegate respondsToSelector:@selector(attributedLabel:shouldFollowLink:)])

        [self.storyText.delegate performSelector:@selector(attributedLabel:shouldFollowLink:) withObject:self.storyText];
}

在点击方法中,我检查是否点击链接,应该调用委托,但委托不会调用。我错过了什么吗?

在此处输入图像描述

4

2 回答 2

0

您可以使用自定义 UIButtons 而不是标签,或者您可以将具有清晰背景颜色的自定义 UIButtons 放置在链接上并为此按钮提供操作。

于 2013-01-21T05:16:27.090 回答
0

解决了!解决方案:首先我为我的 scrollView 创建一个自定义类,并从 UIScrollView 继承它。其次我覆盖

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

在我的自定义 ScrollView 类中。在这个方法中,我调用了一个方法来关闭弹出框。

但重要的部分是,在将出现弹出框的类的 viewWillAppear 方法中,我将 self 传递给自定义 scrollView 类。因为如果我不这样做,则关闭 popover 的方法将不起作用(它需要此类的对象)。

[self.scrollView initWithStoryViewController:self];

在此处输入图像描述

这张图片显示了我在哪种情况下遇到了这个问题:

于 2013-01-21T12:45:06.867 回答