在 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 旁边的 UILabels 将不起作用。注意:我确实在这个元素上将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 上点击手势不起作用的主要内容,如果未能解决你的问题,请参考以下文章

UIPageControl

如何在全屏 ChildViewController 上显示 UIPageControl?

能够在 UIpageControl 中选择对象

iOS - UIPageControl 上的 UIButton 不起作用

在 iOS 中增加 UIPageControl 大小

UIPageControl(页面控件)不显示在 UIPageViewController