【发布时间】:2017-01-20 18:41:37
【问题描述】:
我的项目有一个自定义的 uitableviewCell,里面有一个图像滑块。基本上是一个带有图像分页的滚动视图。
我需要点击并双击此 ImageSlider 来执行一些操作。单击可以正常工作,但没有触发双击选择器。
override func awakeFromNib() {
super.awakeFromNib()
let singleTap = UITapGestureRecognizer(target: self, action: #selector(singleTap(_:)))
singleTap.numberOfTapsRequired = 1
singleTap.cancelsTouchesInView = false
slideShowView.addGestureRecognizer(singleTap)
//Double tap recognizer
let doubleTap = UITapGestureRecognizer(target: self, action: #selector(doubleTap(_:)))
doubleTap.cancelsTouchesInView = false
doubleTap.numberOfTapsRequired = 2
slideShowView.addGestureRecognizer(doubleTap)
singleTap.require(toFail: doubleTap)
print("slideshow recognizers",slideShowView.gestureRecognizers!) }
func doubleTap(_ sender : UITapGestureRecognizer) {
print("doubletap")
}
func singleTap(_ sender : UITapGestureRecognizer) {
print("singleTap")
}
问候
编辑:你可以在这里看到我的日志,我也改变了我原来的帖子
slideshow recognizers [<UITapGestureRecognizer: 0x17ec1670; state = Possible; view = <ImageSlideshow.ImageSlideshow 0x17ec0e30>; target= <(action=singleTap:, target=<Descubra.FeedDefaultCell 0x183cf800>)>; must-fail = {
<UITapGestureRecognizer: 0x17e763b0; state = Possible; view = <ImageSlideshow.ImageSlideshow 0x17ec0e30>; target= <(action=doubleTap:, target=<Descubra.FeedDefaultCell 0x183cf800>)>; numberOfTapsRequired = 2>
}>, <UITapGestureRecognizer: 0x17e763b0; state = Possible; view = <ImageSlideshow.ImageSlideshow 0x17ec0e30>; target= <(action=doubleTap:, target=<Descubra.FeedDefaultCell 0x183cf800>)>; numberOfTapsRequired = 2; must-fail-for = {
<UITapGestureRecognizer: 0x17ec1670; state = Possible; view = <ImageSlideshow.ImageSlideshow 0x17ec0e30>; target= <(action=singleTap:, target=<Descubra.FeedDefaultCell 0x183cf800>)>>
}>]
singleTap
【问题讨论】:
-
requireToFail 如果您在同一视图上使用两个手势,则必须这样做。还要确保您的视图 hase userinteractionenabled = YES 并且您在 tableview DidSelect 中没有阻止双击被触发的方法。
-
@sneak 它的 userInteractionEnabled = true,否则我无法在幻灯片中滑动我的图片,并且单键正在工作,因为我在另一个视图中打开每张图片。
-
对不起,我错过了你拥有 UIScrollView 的部分。如果你在你的文本中写 UIScrollView 会容易得多,因为将来人们会错过细节。似乎 ScrollView 有自己的双击方法,这就是为什么它会因您的自定义方法而失败。尝试在滚动视图上设置 delaysContentTouches = NO 并让我知道这是否能解决您的问题。否则,既然您知道问题所在,您可以更轻松地在 Google 上找到解决方案。总帐
标签: ios objective-c iphone swift