【问题标题】:How to use touches began?如何使用倒数开始?
【发布时间】:2013-10-31 18:25:44
【问题描述】:

所以我正在编写一个应用程序,其中有一个自定义 UIView,其中包含一个 UIScrollView,其中包含一系列 UIImageView。我想这样做,以便当我触摸 UIScrollView 中的一个 UIImageViews 时,会发生一个事件(现在,假设我打印一个 NSLog() 或其他东西)。

我知道有这个功能:

 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

但我不完全确定如何使用它。哪个 UIView 应该实现这个功能?我会在哪里准确地称呼它?还是在触摸某物时自动调用它?如何找到正确的 UIImageView?

【问题讨论】:

  • 在图像视图中添加UITapGestureRecognizer 会容易得多。请记住,您需要将userInteractionEnabled 设置为YES,以便UIImageView 处理触摸事件。

标签: ios objective-c cocoa-touch mobile uiview


【解决方案1】:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 已经由 UIView 实现(实际上由 UIResponder 超类实现,默认情况下它什么都不做)。这个方法可以让你在子类中重写来做任何你想做的事情。

当在视图边界内开始触摸时,确实会自动调用此方法。

在您的情况下,使用带有图像的 UIButton 可能会更好。

【讨论】:

  • 那么我应该创建一个自定义 UIImageView 类,然后在该类中实现 touchesBegan 吗?我是否需要进行任何类型的边界检查或者是否为我处理?
  • 如果触摸超出视图边界,您将不会收到消息(它将转到其他视图)。听起来你可能想继承 UIImageView。
  • @user1855952 你可能真的想使用 UIButton,它并不完全清楚你的要求是什么。
  • 我想我可以使用 UIButton,但 UIButton 开销更大,出于效率原因,我想避免使用它们。
  • @user1855952 是什么让您说 UIButton 的性能会更差?不要试图过早地优化如此琐碎的事情。
【解决方案2】:

而不是使用touchesBegin:,子类UIImageView,将Tap 手势添加到这个新类并使用这个类而不是你在scrollView 上使用的ImageViews。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    相关资源
    最近更新 更多