基本的に、UIButton のアクション ターゲットのリストを取得したいと考えています。私はこれを経験しましたが、ターゲットが何であるかがわからないため、私の質問は少し異なります。私が持っているのは UIButton オブジェクトだけです。そこで、すべてのアクション ターゲットをキャプチャするために私が行ったことを次に示します。
firstResponder オブジェクトを有効なポインターとして取得する場所で機能する以下のメソッドに触発されました。
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];
UIKit で class-dump を使用して UIWindow クラスを確認したところ、次のように firstResponder が見つかりました。
NS_CLASS_AVAILABLE_IOS(2_0) @interface UIWindow : UIView {
@package
UIResponder *_firstResponder;
}
次に、class-dumpを介してUIControlを確認しました
NS_CLASS_AVAILABLE_IOS(2_0) @interface UIControl : UIView {
@package
NSMutableArray* _targetActions;
}
これが私がやろうとしていることであり、クラッシュします。
NSMutableArray *arr = (NSMutableArray*)[((UIControl*)btn) performSelector:@selector(targetActions)];
NSLog(@"%@",arr);
私に対する陰謀のように聞こえます。しかし、私は何かをだましている可能性が高いです。UIControlのtargetActions配列にアクセスする方法を知っている人はいますか?
編集:エラーメッセージは次のとおりです-
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '- [UIRoundedRectButton targetActions]: unrecognized selector sent to instance 0x1c0ab0'
どんな助けでも感謝します。