第一次抽奖后,UIView方向不正确

时间:2010-09-30 01:06:31

标签: uiview orientation

我有一个视图控制器,可以在每次触摸时交替显示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;
}

1 个答案:

答案 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];

}