【问题标题】:Confirmation regarding touches on iPhone/iPad after inheritance?确认继承后对 iPhone/iPad 的触摸?
【发布时间】:2026-01-08 02:10:01
【问题描述】:

我有以下结构。

  1. myBaseController : UIVIewController
  2. myOriginalController : myBaseController

我在 myOriginalController 上添加了一些视图、图像视图、标签。我想进行一些接触,我在 myBaseController 中得到了完美的体现。有没有办法让我在 myBaseController 中获得一个静态方法或类似方法,它接收一个对象和布尔参数,以打开或关闭特定对象的触摸?

说,我有一个 LabelA,我不想接收事件,但我想动态控制对对象的触摸,我希望 myBaseController 来管理它?那么,将来如果我可以创建继承 myBaseController 的 myAnotherController 那么我也可以动态打开或关闭对象触摸?

请指导。

感谢和问候, 雷诺·琼斯

【问题讨论】:

    标签: iphone objective-c ios ipad


    【解决方案1】:

    不确定你的意思是什么,但如果你想在你的 BaseViewController 中有一个方法来打开或关闭触摸,你可以编写一个实例方法:

    - (void) view:(UIView*)aView shouldReceiveTouch:(BOOL)receivesTouch {
    // allow or block touch on aView
    }
    

    BaseViewController 的子类的所有实例对象都可以访问此方法。

    所以在 myOriginalController 你可以这样做:

    [self view:self.label shouldReceiveTouch:NO];
    

    希望这会有所帮助, 文森特

    【讨论】:

    • 是的,我正在做类似的事情来关闭触摸,但不管打开/关闭,即使我设置为关闭,我也会继续在开始、移动、结束的触摸方法中进行触摸。
    • 那么问题出在您管理触摸的方式上,它可能与您的类层次结构无关。您应该更新您的问题并提供启用和禁用触摸的代码