Я работаю над базовым приложением для iPhone, чтобы протестировать некоторые события, и у меня возникла ошибка, которую я не могу понять или найти ответы. Я вообще не использую IB (кроме MainWindow.xib, который он создает).
Прямо сейчас это настолько просто, насколько это возможно.
mainAppDelegate.h
#import <UIKit/UIKit.h>
#import "mainViewController.h"
@interface mainAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
mainViewController *viewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) mainViewController *viewController;
@end
mainAppDelegate.m
#import "mainAppDelegate.h"
@implementation mainAppDelegate
@synthesize window;
@synthesize viewController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.viewController = [[mainViewController alloc] init];
[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
}
- (void)dealloc {
[viewController release];
[window release];
[super dealloc];
}
@end
mainViewController.h
#import <UIKit/UIKit.h>
@interface mainViewController : UIViewController {
}
- (void)showMenu;
@end
mainViewController.m
#import "mainViewController.h"
@implementation mainViewController
- (void)loadView {
UIScrollView *mainView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
mainView.scrollEnabled = YES;
self.view = mainView;
self.view.backgroundColor = [UIColor grayColor];
[self.view setUserInteractionEnabled:YES];
[self.view addTarget:self action:@selector(showMenu) forControlEvents:UIControlEventTouchDown];
[mainView release];
}
- (void)showMenu {
NSLog(@"Show Menu");
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (void)dealloc {
[super dealloc];
}
@end
Теперь я получаю предупреждение в этой строке:
[self.view addTarget:self action:@selector(showMenu) forControlEvents:UIControlEventTouchDown];
, в котором говорится, что «UIView может не отвечать на« -addTarget: action: forControlEvents: ». И это не имеет смысла, потому что подкласс UIView, безусловно, может реагировать на addTarget, и я вызываю его для self.view, который должен существовать, потому что я не выпускаю его до конца loadView. (и даже тогда он должен быть сохранен контроллером)
Просмотр трассы показывает, что фактическая ошибка
- [UIScrollView addTarget: action: forControlEvents:]: нераспознанный селектор отправлен в экземпляр 0x5f11490
Похоже, это проблема самого селектора, но я не вижу ничего плохого в моем селекторе!
Я довольно озадачен этим, и любая помощь будет великолепна.