0

在一个 ios 项目中,有很多 viewcontroller 文件,我的很多人开发了一段时间。我启动了模拟器,并导航到各种屏幕。在导航的中间,我想找到在屏幕上按下按钮时将调用哪个操作方法。如何在不分析项目和不使用断点的情况下轻松找到它。

4

2 回答 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 回答