在一个 ios 项目中,有很多 viewcontroller 文件,我的很多人开发了一段时间。我启动了模拟器,并导航到各种屏幕。在导航的中间,我想找到在屏幕上按下按钮时将调用哪个操作方法。如何在不分析项目和不使用断点的情况下轻松找到它。
问问题
124 次
2 回答
1
创建 UIButton 类别并确保它包含在您的目标中:
UIButton+actionsFinder.h
#import <UIKit/UIKit.h>
@interface UIButton (actionsFinder)
@end
UIButton+actionsFinder.m
#import "UIButton+actionsFinder.h"
@implementation UIButton (actionsFinder)
-(void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event {
NSLog(@"%s %d %s %@ %@\n %@\n %@", __FILE__, __LINE__, __PRETTY_FUNCTION__, @"Button clicked!\n", NSStringFromSelector(action), [target description], [event description]);
[super sendAction:action to:target forEvent:event];
}
@end
当任何按钮发送任何操作时,您将在控制台中看到如下内容:
/Users/username/appname/targetname/UIButton+actionsFinder.m 15 -[UIButton(actionsFinder) sendAction:to:forEvent:] Button clicked!
onButton:
<MCViewController: 0x715e280>
<UITouchesEvent: 0x7639f40> timestamp: 23516.9 touches: {( <UITouch: 0x7169240> phase: Ended tap count: 1 window: <UIWindow: 0x754e6d0; frame = (0 0; 320 568); autoresize = W+H; layer = <UIWindowLayer: 0x754e7d0>> view: <UIRoundedRectButton: 0x7161290; frame = (123.5 38; 73 44); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x71613b0>> location in window: {149, 81.5} previous location in window: {149, 81.5} location in view: {25.5, 23.5} previous location in view: {25.5, 23.5}
请注意,您将获得以下信息:
目标类onButton 的选择器名称:我已声明并链接到按钮 onTouchUpInside 事件操作,实际方法签名看起来像
-(IBAction)onButton:(id)button;
显示目标类的目标描述: MCViewController
触发动作的事件的描述
我正在使用__FILE_
_, __LINE__
, __PRETTY_FUNCTION__
macros' 来查看 NSLog 消息的来源。
于 2013-03-29T15:18:55.170 回答
0
您可以右键单击按钮查看:
哪个选择器被添加到特定的触摸事件。
或NSLog(@"%s", __PRETTY_FUNCTION__);
在每个函数上打印,因此该日志将在调用该函数时打印函数名称。
于 2013-03-29T14:59:49.607 回答