在iPad应用程序中对UIWindow进行子类化

时间:2011-07-24 22:28:30

标签: objective-c ipad uiwindow

我有这个奇怪的问题..我正在构建一个应该在应用程序内注册所有触摸事件的内部应用程序,并且当发生触摸时,重置计时器。计时器检查用户是否处于非活动状态超过60秒,然后将他/她从系统中记录下来。

现在......我想继承UIWindow,并通过那里窃取所有触摸事件,但这是不可能的! This is the great tutorial I'm following,(可下载的示例有效)但在我的项目中实现,代码不起作用......

这是我的AppDelegate.h文件:

#import <UIKit/UIKit.h>
#import "TouchWindow.h"

@interface StureplansHLMAppDelegate : UIResponder <UIApplicationDelegate> {
TouchWindow *window;
Settings *appSettings;
}

@property (nonatomic, retain) TouchWindow *window;
@property (nonatomic, retain) Settings *appSettings;

@end

这是.m文件

#import "StureplansHLMAppDelegate.h"
#import "TouchWindow.h"
#import "WelcomeScreen.h"

@implementation StureplansHLMAppDelegate

@synthesize window;
@synthesize appSettings;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[TouchWindow alloc] init];
self.window = [[TouchWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
WelcomeScreen *startScreen = [[WelcomeScreen alloc] init];
[self.window addSubview:startScreen.view];
[self.window makeKeyAndVisible];

return YES;
}

当我使用我的自定义UIWindow类进行实例化时,应用程序只是黑色并且从不加载视图...

我正在使用XCode 4.2 iOS 5和故事板。有人能帮我吗?我如何让它工作?

1 个答案:

答案 0 :(得分:3)

您需要在某处保留startScreen。而不是将startScreen的视图添加到具有addSubview的窗口,只需将其设置为窗口的rootViewController

self.window.rootViewController = startScreen