我的iPhone应用程序中的视图层次结构的正确部分出现了一些麻烦,无法获得应有的触摸事件。该代码在iOS 11中全部为Swift。
我有一个UIControl子类,该子类重写beginTracking()和endTracking()。最初,我以编程方式创建了UIView,然后将UIControl子类的实例添加为子视图。代码基本上可以归结为:
myView = UIView()
view.addSubview(myView)
// add autolayout constraints for the view
myControl = TheControl(frame: theFrame)
myView.addSubview(myControl)
// add autolayout constraints for the control
这很好用,但我想在Interface Builder中使用myView来使自动布局更加容易。因此,我摆脱了“ myView = UIView()”和“ view.addSubview(myView)”行,在IB中创建了视图,并将其连接到视图控制器中的插座。其余代码保持不变。因此,我以编程方式创建了myControl,并将其添加为myView的子视图。现在,我的myControl不再接收触摸事件。
通过在Interface Builder和代码中执行此操作,我无法弄清楚发生了什么变化。我已经在IB中的myView上打开和关闭“已启用用户交互”功能,据我所知这没有任何区别。
我在这里做什么错了?