在 UIPageControl 旁边的 UILabel 上点击手势不起作用
Posted
技术标签:
【中文标题】在 UIPageControl 旁边的 UILabel 上点击手势不起作用【英文标题】:Tap gesture on UILabel beside a UIPageControl not working 【发布时间】:2018-05-08 19:02:56 【问题描述】:我在UIPageControl
的两边都有一个UILabel
,如下图:
我发现点击UIPageControl
点的侧面会前进,即不是在我的箭头上,也不会触发我的方法。但其他都不会改变,所以我在UIPageControl
上将isUserInteractionEnabled
设置为false
。
我连接(通过UITapGestureRecognizer
)上面的另一个UILabel
,它启动了一个很好的方法。
但是,UIPageControl
旁边的 UILabel
s 将不起作用。注意:我确实在这个元素上将isUserInteractionEnabled
设置为true
。 (我什至暂时将元素更改为 UIButton
,但它也不起作用 - 所以我恢复为我的 UILabel
。)
那么,有没有办法将UILabel
添加到触发的UIPageControl
的一侧?或者,可以将不可见的对象(在点击UIPageControl
的左侧或右侧时 - 就像我的第二句话中一样)连接到自定义方法吗?
更新:
我添加了另一个单独的模式(相同的标题标签、按钮,但没有集合视图和页面控件)。同样,当我按下中心的标签时它不会响应,但我暂时使用了标题标签,它可以正常响应并启动我的方法。
谁能说出原因?
【问题讨论】:
检查您的页面控制框架是否超过标签 这是我的想法。你能解释一下如何设置吗? 只需将背景设置为深色并检查框架标签是否可见 背景色不覆盖标签,约束为 H:|-2-[v0(25)]-2-[v1]-2-[v2(25)]-2- |" 其中 v0 返回,v1 是页面控件,v2 是下一个 你在 UIstackView 中设置了吗 【参考方案1】:我解决了这个问题!
我在类顶部的闭包块中声明了大多数变量 - 以及 UILabel - ,如下所示:
let myLabel: UILabel =
let view = UILabel()
view.translatesAutoresizingMaskIntoConstraints = false
view.isUserInteractionEnabled = true
view.textColor = UIColor.blue
return view
在这个闭包中我有 view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(doMyLabelMethod(_:))))
和 view.isUserInteractionEnabled = true
,当我将它们从闭包中移出并直接放在 addSubview(myLabel)
发射得很好。
因此,可变闭包可以很好地包含许多修饰,但不能包含手势识别器!
【讨论】:
以上是关于在 UIPageControl 旁边的 UILabel 上点击手势不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在全屏 ChildViewController 上显示 UIPageControl?