由 UITapGestureRecognizer 创建的单击在 UIButton 上不起作用
Posted
技术标签:
【中文标题】由 UITapGestureRecognizer 创建的单击在 UIButton 上不起作用【英文标题】:Single tap, created by UITapGestureRecognizer, doesn't work on UIButton 【发布时间】:2016-01-12 06:01:03 【问题描述】:我有很多 UIButtons 没有任何动作。我想在点击处理函数中调用一些操作。我使用 UITapGestureRecognizer 创建单击。当我在 UIButton 上点击 not 时,单击处理程序会工作。当我点击我的 UIButton 时,我看到按下此按钮的动画,但单击处理程序不起作用。我还创建了双击,它工作正常。
问题№1 单击一下可以做什么?当我点击我的 UIButton 时,处理程序应该可以工作。
问题№2 如何在点击处理程序中获取 UIButton?我需要从此按钮获取文本标签。
我的部分代码:
override func viewDidLoad()
...
let singleTap = UITapGestureRecognizer(target: self, action: "singleTap:")
singleTap.numberOfTapsRequired = 1
singleTap.numberOfTouchesRequired = 1
view.addGestureRecognizer(singleTap)
let doubleTap = UITapGestureRecognizer(target: self, action: "doubleTap:")
doubleTap.numberOfTapsRequired = 2
doubleTap.numberOfTouchesRequired = 1
view.addGestureRecognizer(doubleTap)
singleTap.requireGestureRecognizerToFail(doubleTap)
...
func doubleTap(sender: UIGestureRecognizer)
if sender.state == .Ended
print("doubleTap")
func singleTap(sender: UIGestureRecognizer)
if sender.state == .Ended
print("singleTap")
func addButton(time:String, x:CGFloat, y:CGFloat, width:CGFloat, height:CGFloat, tag: Int) -> UIButton
let button = UIButton(type: UIButtonType.System) as UIButton
button.frame = CGRectMake(x, y, width, height)
button.setTitle(time, forState: UIControlState.Normal)
button.tag = tag
self.scrollView.addSubview(button)
return button
【问题讨论】:
为什么不使用 IBAction 作为按钮?view.addGestureRecognizer(singleTap)
建议单击视图而不是button
禁用每个 UIButtons 的用户交互或为所有按钮添加处理程序。
@iosDeveloper - 右边也加button.enabled=NO
,先全局定义button
。虽然这可能会有所帮助:***.com/questions/4825199/…
【参考方案1】:
如果您想将 TapGesture 添加到 Button 中,请这样做:
let singleTap = UITapGestureRecognizer(target: self, action: "singleTap:")
singleTap.numberOfTapsRequired = 1
singleTap.numberOfTouchesRequired = 1
yourButton.addGestureRecognizer(singleTap)
【讨论】:
非常感谢。我认为 UITapGestureRecognizer 仅适用于视图。为了获得文本标签,我在处理程序中使用这部分代码:(sender.view as! UIButton).titleLabel!.text!
以上是关于由 UITapGestureRecognizer 创建的单击在 UIButton 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章
UITapGestureRecognizer 不适用于 UIView 动画
使用 UITapGestureRecognizer 无法识别的选择器
UIlabel 中的 UITapGestureRecognizer 错误