如何在 Swift 中检测对 UITableViewCell 的 UIImageView 的触摸?

Posted

技术标签:

【中文标题】如何在 Swift 中检测对 UITableViewCell 的 UIImageView 的触摸?【英文标题】:How to detect touches on UIImageView of UITableViewCell in Swift? 【发布时间】:2015-06-29 00:00:24 【问题描述】:

基本上,这与此问题相同: How to detect touches on UIImageView of UITableViewCell object in the UITableViewCellStyleSubtitle style

但我必须在 Swift 中完成。我不能在 Obejctive-C 中编程。

cell.imageView.userInteractionEnabled = YES;
cell.imageView.tag = indexPath.row;

UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myFunction:)];
tapped.numberOfTapsRequired = 1;
[cell.imageView addGestureRecognizer:tapped];   
[tapped release];


-(void)myFunction :(id) sender

UITapGestureRecognizer *gesture = (UITapGestureRecognizer *) sender;
NSLog(@"Tag = %d", gesture.view.tag);

有人可以帮我移植这段代码吗? :(

【问题讨论】:

【参考方案1】:

尝试自己编写。这就是你学习的方式。以下是一些逐行提示:

1: cell.imageView.userInteractionEnabled = YES;
2: cell.imageView.tag = indexPath.row;

3: UITapGestureRecognizer *tapped = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myFunction:)];
4: tapped.numberOfTapsRequired = 1;
5: [cell.imageView addGestureRecognizer:tapped];
6: [tapped release];


7: -(void)myFunction :(id) sender
8: 
9:     UITapGestureRecognizer *gesture = (UITapGestureRecognizer *) sender;
10:    NSLog(@"Tag = %d", gesture.view.tag);
11:

提示

把周围的分号去掉 第 1 行) Swift 使用 true 而不是 YES 表示积极的 Boolean 第 3 行)在 Xcode 中输入 let tapped = UITapGestureRecognizer( 并查看弹出的自动完成选项。选择带有targetaction 的那个。填写目标self和行动"myFunction:" 第 4 行)几乎相同 第 5 行) 拨打 addGestureRecognizer(tapped) cell.imageView 第 6 行)不需要,ARC 会为您执行此操作 第 7 行)定义一个函数 myFunction,它接受一个名为 gestureUITapGestureRecognizer 并且不返回任何内容 第 9 行)不需要行,因为您已经在函数的标题中处理了该行 第 10 行)使用println 代替NSLog 并使用字符串插值打印出gesture.view.tag

【讨论】:

漂亮!终于摆脱了我的 UIImage 上的自定义 UIButton :) 非常感谢伙伴,在 ios 11 / Swift 4 中也可以正常工作。【参考方案2】:

斯威夫特 3

cell.imageView.isUserInteractionEnabled = true
cell.imageView.tag = indexPath.row

let tapped = UITapGestureRecognizer(target: self, action: #selector(myFunction))
tapped.numberOfTapsRequired = 1
cell.imageView.addGestureRecognizer(tapped)



func myFunction(gesture: UITapGestureRecognizer) 
    print("it worked")

【讨论】:

以上是关于如何在 Swift 中检测对 UITableViewCell 的 UIImageView 的触摸?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 的一个部分中删除行中的用户默认数据?

检测 Swift 中按钮的点击

swift4中的UITextfield验证 - 动态单元格

如何检测我的音频流 url 是不是无法被 iOS 设备播放 - swift3

如何使用 Swift 开发简单的条形码检测器?

如何在 XLPagerTabStrip swift 中检测滑动或选择事件