В проекте ios есть множество файлов viewcontroller, разработанных многими людьми в течение определенного периода времени. Я запустил симулятор и перешел на различные экраны. В середине навигации я хочу найти, какой метод действия вызывается при нажатии кнопки на экране. Как легко найти его без значительного анализа проекта и без использования контрольных точек.Как обнаружить файл «viewcontroller», содержащий целевое действие, соответствующее нажатию кнопки?
Как обнаружить файл «viewcontroller», содержащий целевое действие, соответствующее нажатию кнопки?
ответ
Создать категорию 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__
макросы, чтобы увидеть, где NSLog сообщение приходящий из.
Вы можете щелкнуть правой кнопкой на кнопке, чтобы увидеть:
Какой селектор добавляется конкретного сенсорного события.
Или Печать NSLog(@"%s", __PRETTY_FUNCTION__);
В каждой функции, поэтому этот журнал будет печатать имя функции всякий раз, когда эта функция будет вызвана.
responsesToSelector используется для определения того, реагирует ли кнопка на действие или нет (во время выполнения)? Однако мой вопрос - это совсем другое. –
Когда я знаю диспетчер представлений файла, я могу пойти и проверить touchupinside. Я хочу знать, как найти этот viewcontroller в большом проекте, без большого анализа –
Да, NSLog (__ Pretty_Function__); это хорошая идея, но не каждый мог бы добавить такой журнал в свои методы действий все время в существующем проекте, когда многие люди работают в одном проекте на разных экранах. –
- 1. Целевое действие называется дважды
- 2. Как вызвать действие в распорок по нажатию кнопки в JSP
- 3. Действие кнопки панели на ViewController в ViewContainer
- 4. Как Показать Container Посмотреть в ViewController (ребенок ViewController) по нажатию кнопки на ParentViewcontroller
- 5. UIBarButtonItem: целевое действие не работает?
- 6. Как назначить событие нажатию кнопки?
- 7. Как назначить событие нажатию кнопки
- 8. Подсказка по нажатию кнопки
- 9. Swift3 - Как добавить целевое действие к UITableViewCell
- 10. Как перевести целевое действие на блокировку?
- 11. Как обнаружить, что активирован ViewController?
- 12. Как определить действие по нажатию (событие)?
- 13. Как загрузить новый файл по нажатию кнопки изображения
- 14. Ajax не вызывает соответствующее действие
- 15. Как обнаружить обратное нажатие кнопки
- 16. Захват прокрутки по нажатию кнопки
- 17. jQuery Подтверждение по нажатию кнопки
- 18. Изменить изображение по нажатию кнопки
- 19. css исчезает по нажатию кнопки
- 20. iOS: два жесты, одно целевое действие
- 21. Состояние NSMenuItem, динамическое именование и целевое действие
- 22. Dellocation ViewController, содержащий фоновый поток
- 23. ng повторить по нажатию кнопки
- 24. вызова функции по нажатию кнопки
- 25. Всплывающее меню по нажатию кнопки
- 26. изменить текст по нажатию кнопки
- 27. Создать оповещение по нажатию кнопки
- 28. Добавление fadeIn() к нажатию кнопки
- 29. Добавить данные по нажатию кнопки
- 30. указать целевое действие на компонент ember
Именно то, что мне нужно. Большое спасибо :-) –