Я работаю над базовым приложением для 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.
Так что похоже, что это проблема с самим селектором, но я не вижу ничего плохого в моем селекторе!
Я довольно сбит с толку этим, и любая помощь была бы здоровой.