いくつかのイベントをテストするために基本的な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に送信されたことがわかります。
セレクター自体に問題があるように見えますが、セレクターに問題はありません。
私はこれにかなり困惑していて、どんな助けでも素晴らしいでしょう。