2012-10-25 44 views
2

我有一個iPad項目與UISplitViewController結構:頂部檢測透明的UIView倒是

  • RootViewController的
  • DetailviewController

他們兩人都是檢測自己的類內手勢識別器接觸。

我想在所有類之上創建一個透明的UIView,以檢測只有一個對角滑動(從左下角到右上角)。

因此,當滑動將被檢測到時,我將啓動一個函數,否則沒有附加任何東西,觸摸應該在低級視圖上傳遞。

我嘗試這兩種解決方案:

  • 添加GestureRecognizer這個頂部透明的看法,但這樣會隱藏所有接觸到較低層次視圖(啓用用戶交互:是ofcourse)。

另一個解決辦法是讓初始化這樣

-(id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
    // Initialization code 
    [self setBackgroundColor:[UIColor colorWithWhite:1 alpha:0.01]]; 
    [self setUserInteractionEnabled:NO]; 
} 

return self; 

}

,並嘗試與

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

檢測刷卡,但在這一點上的所有接觸都沒有檢測到。

任何人都有一個很好的解決方案?

回答

2

我不會像你提到的那樣創建一個透明的UIView。我將在UISplitViewController的視圖中添加一個UISwipeGestureRecognizer,這已經是包含所有子視圖的視圖。你可以有app委派內訪問視圖:

UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; 

// attach the swipe gesture to the view that embeds the rootView and the detailView 
UISwipeGestureRecognizer* swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:splitViewController.view action:@selector(swipeUpdated:)]; 
+0

Tnx爲快速回答。 –

+0

Tnx @tiguero快速回答。你是對的,但不是所有的IOS版本都支持手勢識別器。我發現的是,正確的方法應該是**繼承UIWindow並覆蓋「 - (void)sendEvent:(UIEvent *)事件'和 - (BOOL)pointInside:(CGPoint)point withEvent: (UIEvent *)事件'。所以我可以調用/或不調用'[super sendEvent:event]'將事件傳遞給UIViews Hierarchy。你認爲這個解決方案的傢伙是什麼? –

1

難道你不能只是添加一個手勢識別器到UISplitViewController的視圖?

0

你應該看看Container Controllers。您可以製作自己的SplitViewController,並在檢測到滑動的控制器頂部製作第三個視圖。自定義容器控制器非常簡單,給你很大的靈活性。