2010-09-30 43 views
2

我有一個視圖控制器,它在每次觸摸時交替顯示2個視圖。每個視圖都會覆蓋drawRect函數。第一次繪製後UIView方向不正確

它適用於iPad處於縱向位置但橫向位置時,視圖僅以正確方向顯示一次。之後,他們總是以縱向出現。

怎麼了?

在視圖控制器:

- (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

我解決了這一問題。這很簡單,很有意義。基本上問題是隻有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]; 

}