iOS アプリケーションのアクセシビリティ プロジェクトに取り組んでいます。アクセシビリティは宣伝どおりには機能しないため、VoiceOver によって認識される領域 (描画とタッチ認識の両方) をコントロール ビューの「自然な」境界を超えて拡張するために、サブクラスでaccessibilityFrame
とaccessibilityActivationPoint
をオーバーライドする必要があります。pointInside:withEvent
したがって、の VoiceOver 境界を変更するには、UIButton
そのクラスをサブクラス化し、これら 3 つのメソッドを追加する必要があります。これを行うUILabel
には、コードを含む別のサブクラスを追加する必要があります。
これらのメソッドのコードを中央の場所にリファクタリングすることはできますが、継承を使用してこれをよりエレガントに行うことができるかどうか疑問に思っていました。UIView
このコードを(maybe called UIViewAccessible
) のサブクラスに入れてから、の代わりにから継承される、 から継承さUIButton
れる と呼ばれるのサブクラスを作成したいと思います。これは可能ですか、またはこのようなことをカテゴリで行うことができますか?UIButtonAccessible
UIButton
UIViewAccessible
UIView
編集:ドキュメントによると、カテゴリでこれを実際に達成することはできません:
カテゴリで宣言されたメソッドの名前が、元のクラスのメソッド、または同じクラス (またはスーパークラス) の別のカテゴリのメソッドと同じである場合、どのメソッド実装が使用されているかについての動作は未定義です。ランタイム。
これを行う他の方法はありますか?