我使用File / New Projet / View-Based应用程序创建了一个非常基本的iPhone应用程序。 那里没有NIB文件。
这是我的appDelegate
·H
@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
MyViewController *viewController;
}
的.m
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
这是我的控制器中的loadView方法
- (void)loadView {
CGRect mainFrame = [[UIScreen mainScreen] applicationFrame];
UIView *contentView = [[UIView alloc] initWithFrame:mainFrame];
contentView.backgroundColor = [UIColor redColor];
self.view = contentView;
[contentView release];
}
现在,为了捕获touchesBegan事件,我创建了一个新的UIView子类:
·H
@interface TouchView : UIView {
}
的.m
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"Touch detected");
}
并将loadView中的第二行修改为:
TouchView *contentView = [[UIView alloc] initWithFrame:mainFrame];
为什么touchesBegan从未打过电话?
答案 0 :(得分:3)
如果您将loadView更改为:
TouchView *contentView = [[TouchView alloc] initWithFrame:mainFrame];
在TouchView中捕捉触摸应该没有问题。在您的代码中,您没有创建TouchView实例,而是创建了一个UIView实例。
答案 1 :(得分:0)
找到解决方案:touchesBegan在viewController上调用,而不是在view ...
上调用