基本上我想获得一个 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;
}
然后我通过类转储检查了 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'
任何帮助表示赞赏。