我正在开发一个 iOS 应用程序的辅助功能项目。因为可访问性并不像宣传的那样,我必须在子类中覆盖accessibilityFrame,accessibilityActivationPoint和pointInside:withEvent,以便将 VoiceOver 识别的区域(用于绘图和触摸识别)扩展到控制视图的“自然”边界之外。因此,为了更改 a 的 VoiceOver 边界,UIButton我必须将该类子类化,然后添加这三个方法。为了做到这一点,UILabel我必须使用代码添加另一个子类,依此类推。
我可以将这些方法中的代码重构到一个中心位置,但我想知道这是否可以通过继承更优雅地完成。我想将此代码放入UIView(可能称为UIViewAccessible)的子类中,然后创建一个UIButton被调用的子类,该子类UIButtonAccessible继承自该子类,而该子类UIButton又将继承自. 这是可能的,还是可以用一个类别来完成这样的事情?UIViewAccessibleUIView
编辑:根据文档,您无法通过类别真正实现这一目标:
如果在一个类别中声明的方法的名称与原始类中的方法相同,或者与同一类(甚至是超类)上的另一个类别中的方法相同,则对于在哪个方法实现中使用的行为是不确定的运行。
还有其他方法可以做到这一点吗?