如何在 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(
并查看弹出的自动完成选项。选择带有target
和action
的那个。填写目标self
和行动"myFunction:"
第 4 行)几乎相同
第 5 行) 拨打 addGestureRecognizer(tapped)
cell.imageView
第 6 行)不需要,ARC 会为您执行此操作
第 7 行)定义一个函数 myFunction
,它接受一个名为 gesture
的 UITapGestureRecognizer
并且不返回任何内容
第 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 的触摸?的主要内容,如果未能解决你的问题,请参考以下文章