我添加了一个标签,其中包含一些文字和指向ScrollView的链接, 当您点击这些链接(在标签中)时,委托方法将调用,显示弹出窗口并显示一些相关信息。
但问题从这里开始,我想当你点击除了链接之外的任何地方时,popover就会消失。
如果我向ScrollView添加UITapGestureRecognizer,链接的委托方法将不会调用。
我该如何处理标签处理链接上的点击,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];
}
在tapped方法中我检查是否点击链接,应该调用委托,但Delegate不会调用。 我错过了某些人吗?
答案 0 :(得分:0)
您可以使用自定义UIButtons代替标签,也可以在链接上放置具有清晰背景颜色的自定义UIButton,并为此按钮添加操作。
答案 1 :(得分:0)
解决! 解: 首先,我为我的scrollView创建一个自定义类,并从UIScrollView创建子类。 其次我重写
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
在我的自定义ScrollView类中。在这个方法中,我调用了一个方法来解除popover。
但重要的一点是,在将出现popover类的viewWillAppear方法中,我将self传递给自定义scrollView类。因为如果我不这样做,解雇popover的方法将不起作用(它需要这个类的对象)。
[self.scrollView initWithStoryViewController:self];
此图片显示我遇到此问题的方案: