簡體   English   中英

UISplitViewController滑動手勢干擾其他滑動手勢

[英]UISplitViewController swipe gesture interferes with other swipe gesture

我正在使用UISplitViewController ,其中一個詳細視圖控制器包含一個添加了UIPanGestureRecognizer的視圖。 當我在細節視圖控制器中滑動該視圖時,識別手勢,但是分割視圖控制器的滑動手勢識別器會干擾它; 顯示主視圖控制器,忽略細節控制器中的手勢識別器。

UIGestureRecognizerDelegate實現和調試shouldRecognizeSimultaneouslyWithGestureRecognizer方法顯示了兩個UIPanGestureRecognizer對象:一個來自詳細視圖控制器,一個來自拆分視圖控制器,所以我確定它們互相干擾。

當我在拆分視圖控制器上設置presentsWithGesture = NO時,詳細視圖控制器內的手勢識別器可以正常工作。 但是這會禁用分割視圖控制器上的手勢識別器,因此它並不是解決問題的方法。

我也嘗試在分割視圖控制器上禁用手勢識別器,只有當我需要其他手勢識別器才能工作時,但是一旦分割視圖控制器變得可見,似乎無法設置presentsWithGesture

我還嘗試在分割視圖控制器上禁用默認手勢並添加我可以控制的自定義手勢,但它不起作用。 我嘗試在手勢上使用分割視圖控制器按鈕上的targetaction ,但它不起作用。 調用toggleMasterVisible:在拆分視圖控制器上也不是一個選項,因為它是私有api的一部分。

有沒有人對如何處理這個有任何建議?

我建議您在需要另一個工作時禁用UISplitViewController平移手勢。 這應該這樣做:

for (UIGestureRecognizer* recognizer in [splitViewController gestureRecognizers]) {
    if ([recognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
        [recognizer setEnabled:NO];
    }
}

您可能不希望每次都搜索它,因此我會在視圖加載時存儲對該手勢識別器的引用,然后根據需要禁用和啟用:

在viewDidLoad上:

for (UIGestureRecognizer* recognizer in [splitViewController gestureRecognizers]) {
    if ([recognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
        [self setSplitViewPanGesture:recognizer];
    }
}

后來:

[self.splitViewPanGesture setEnabled:NO];

然后:

[self.splitViewPanGesture setEnabled:YES];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM