【问题标题】:How to respond to a very quick touch?如何响应非常快速的触摸?
【发布时间】:2016-04-19 07:35:14
【问题描述】:

我发现 touchDown 事件有点慢,因为它需要一个主要的、相当长的触摸并且不响应轻敲。这是为什么呢?

而 touchesBegan 只会在我需要时做出响应,即即使是非常轻快的触摸也会做出响应。但这不是一个事件,而是一个可以被覆盖的方法。

问题是,touchesBegan 显然需要我 1) 子类化标签(我需要响应触摸标签),或 2) 分析事件以确定它是否来自正确的标签。我想知道这是否是代码异味以及是否应该有一个简单触摸的事件。

【问题讨论】:

  • 您能解释一下您想要实现的目标吗?因为你的要求很混乱。
  • 如果你想向 UILabel 添加轻击手势识别器,请检查:stackoverflow.com/questions/10079019/… 可能是重复的

标签: ios objective-c touchesbegan


【解决方案1】:

尝试将UITapGestureRecognizer 添加到您的标签。

【讨论】:

    【解决方案2】:

    首先,允许 label 处理用户交互:

    label.userInteractionEnabled = true
    

    您可以将点击手势分配给标签。然后在处理程序方法中,您需要 switch 超过识别器的 state 属性。如果是.Began,你得到了你需要的事件。

    这种方法很酷的一点是,您可以将这个处理程序用于所有标签。在处理程序内部,您可以像这样触摸标签:

    let label = tapRecognizer.view as! UILabel
    

    【讨论】:

      【解决方案3】:

      “代码味道”?不,这是用户界面的气味。用户界面很臭。

      如果您在用户界面中使按钮的行为与任何其他应用程序中的按钮不同,那么人们会讨厌您的应用程序。做人们习惯的事情。

      【讨论】:

      • 你在假设。如果你不确定我想要完成什么,问一下也无妨。
      • 我没有说任何关于按钮的事情。我实际上是想让 TextField 在某些情况下表现得像一个按钮。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多