如何将触摸的标签文本传递给手势识别器选择器方法

时间:2012-10-06 18:31:58

标签: iphone objective-c ios uitableview uigesturerecognizer

我有一个UITableView,我正在为单元格使用UITableViewCell类。在内部单元格中,我使用标签来显示公司数据。

我需要的是在用户点击公司标题时在浏览器中打开公司网站,或者在显示电子邮件地址时用户cliks打开邮件应用程序(但当用户触摸单元格的任何其他部分时不会发生任何事情)。

除了一个“小”的东西,我在技术上做的一切都很好(手势识别器,打开野生动物园和邮件等)。我无法弄清楚如何将这些网址(网络或电子邮件)传递给touchrecognizer选择器方法。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

我认为您可以在表格视图中获取点击位置,并进一步获得该位置的indexPath。

- (void) handleGestureRecognizer:(UIGestureRecognizer *)recognizer {
    CGPoint tapPoint = [recognizer locationInView:self.tableView];
    NSIndexPath * indexPath = [self.tableView indexPathForRowAtPoint:self.tableView];
    // Do whatever you want with indexPath.section, indexPath.row information
}

答案 1 :(得分:4)

- (void)tapAction:(UITapGestureRecognizer *)tap {
UILabel *currentLabel = (UILabel *) tap.view;
NSString *labelText= currentLabel.text;
   }

你可以试试这个..这对我有用!!

答案 2 :(得分:1)

由于您的数据是静态的,您可以在公司标题标签上放置一个隐藏按钮。

在动作中为每个等于rowAtIndexPath的按钮添加标签。

这里你的int tag = button.tag;

现在,如果您要将您的网站链接放在一个数组中,那么:

在按钮操作中,将链接提取为

NSString *urlString=[websteArray objectAtIndex:tag];
                    OR
NSString *urlString=[NSString stringWithFormat:@"http://%@",[websteArray objectAtIndex:indexPath.row]];

NSLog(@"the strurl is %@",urlString);



[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];