我需要在我的窗口看到触摸事件,所以我将UIWindow子类化为MYWindow类。我重写了sentEvent函数来接收窗口上的触摸事件,所有这些都正常工作。我做了以下工作来实现这一目标:
self.window = [[MYWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[window makeKeyAndVisible];
我面临的问题是,当我这样做时,此窗口上的viewControllers将不再旋转。如果我使用常规的UIWindow,它们的工作方式就像我打算让它们工作一样。显然,我的设置有问题。
我正在查看UIWindow头文件,并且有一个名为
的方法- (void)becomeKeyWindow; //override point for subclass, Do Not call directly
我想在我的自定义UIWindow类中实现这个,就像我必须实现sendEvent:方法一样?请指出我正确的方向。
先谢谢你们。
答案 0 :(得分:4)
我弄清楚问题是什么。我在自定义窗口上创建了一个委托,并将其称为“委托”,这导致了问题。将其命名为“aDelegate”解决了这个问题。谢谢你的帮助。
答案 1 :(得分:0)
我只是在这里猜测,但我认为这是因为你现在将MYWindow
作为关键窗口(即使它是透明的)并且shouldAutorotateToInterfaceOrientation:
是UIViewController
的一部分class,而不是UIWindow
。
所以即使你可以看到你的其他观点,他们也不会再调用他们的旋转事件了。
为什么不在UIWindow
上实现那些需要处理触摸事件的视图中添加的触摸事件,而不是将其作为UIView
子类?您也可以将其设为透明,并将旋转处理为UIViewController
级别?