【问题标题】:Do I have to subclass in this case?在这种情况下我必须子类吗?
【发布时间】:2011-05-10 22:31:39
【问题描述】:

我有一个 UIViewController 和一个 UITextView 在里面。我想在 UIViewController 中获取 touchesbegan 方法,但当然,它被 UITextView 阻止了。那么,我是否必须继承 UITextView 才能覆盖 ressignsfirstresponder?有另一种方式,否则我将不得不创建两个文件只是为了覆盖一个简单地返回 NO 的方法。

谢谢。

更新:基本上我想在用户点击屏幕时显示 UIActionSheet。但我也希望 UITextView 可以滚动。

【问题讨论】:

    标签: objective-c cocoa-touch uiviewcontroller uiresponder


    【解决方案1】:

    您可以设置您的UITextView.userInteractionEnabled = NO(这可以在界面生成器/Xcode 4 中完成)。然后触摸将传递到您的 UITextView 后面的视图。如果您想拦截对视图控制器视图的触摸,您可以使用 UIControl 而不是 UIView 作为视图控制器的视图。

    您能告诉我们更多有关您尝试创建的交互的信息吗?

    【讨论】:

    • 感谢我们的回复。我将尝试您提供的启用用户交互的解决方案。另外,我会用更多信息更新我的问题。再次感谢。
    • 这仍然没有将触摸传递给视图控制器。
    • 触摸将传递给视图控制器的视图,而不是视图控制器本身。
    • (但禁用用户交互将使您的 uitextview 不可滚动。)听起来您可能必须在整个屏幕上覆盖视图以拦截所有触摸,然后将这些触摸传递给您背后的视图覆盖视图。
    • 您可以在覆盖视图中覆盖 -touchesBegan:withEvent: touchesEnded:withEvent:touchesMoved:withEvent:touchesCanceled:withEvent: 来执行此操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    相关资源
    最近更新 更多