我有一个视图控制器,可以在每次触摸时交替显示2个视图。每个视图都会覆盖drawRect函数。
当iPad处于纵向位置时有效,但对于横向位置,视图仅以正确方向显示一次。之后,它们总是以纵向显示。
怎么了?
在ViewController中:
- (void)loadView
{
v= [[View2 alloc] init];
self.view =v;
}
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
x++;
if (x%2==0)
{
v= [[View2 alloc] init];
}
else {
v=[[View3 alloc] init];
}
self.view = v;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
答案 0 :(得分:0)
我解决了这个问题。它很简单而且很有意义。基本上问题是只有FIRST视图接收定向事件。更改视图时,必须再次连接事件处理程序,以便新视图可以检测方向。
一个简单的解决方法是创建一个虚拟视图作为父视图,并将view1和view2添加为子视图。我的新控制器代码如下:
- (void)loadView
{
self.view =[[UIView alloc] init];
v= [[View2 alloc] init];
[self.view addSubview:v];
}
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
x++;
if (v!=NULL)
[v removeFromSuperview];
if (x%2==0)
{
v= [[View2 alloc] init];
}
else {
v=[[View3 alloc] init];
}
[self.view addSubview:v];
}