2012-03-13 109 views
12

iOS 5.1中與UISplitViewController應用程序有關的新行爲似乎是攔截UISlider動作,併產生不良結果。這也可能適用於控件和處理從左到右手勢的任何其他控制表面。iOS 5.1被UISplitViewController劫持的滑動手勢 - 如何避免?

以縱向顯示UISplitView,主視圖通常隱藏。從iOS 5.1開始,在屏幕上右擊會在設備左側顯示主視圖。問題是,滑動我的UISlider控制器的拇指被誤解爲屏幕滑動:如果我將UISlider拇指向右側急劇推動,主面板彈出。

在我的應用程序中,存在不希望的副作用(和性能問題),因爲它會佔用主視圖。

我認爲這是Apple的一個bug。任何想法如何解決它?我能以某種方式讓UISlider捕獲手勢並對其進行處理,而不會將其傳遞給響應者鏈?

在此先感謝您的任何見解!

+10

感謝@Dimitris Tavlikos。 雖然我仍然相信蘋果引入了一個bug(UISlider等UIControls不應該與UISplitViewController在這個手勢上競爭),但有一個簡單的解決方法: 'splitViewController.presentsWithGesture = NO; // SplitView無法識別右滑動 發佈問題會導致您突然在其他地方找到答案的是什麼? – jbbenni 2012-03-13 20:46:11

+0

如果我想在主控器上保留默認的手勢功能,但只在滑動器移動時禁用它,該怎麼辦?將'presentsWithGesture'設置爲'no'可以在任何地方禁用手勢。 – Mark13426 2016-11-25 00:39:53

+0

不會發生。滑塊不會移動,因爲在滑塊開始移動之前手勢已被攔截。您不僅可以在滑塊移動時禁用劫持,因爲滑塊甚至不會開始移動。這是一個長鏡頭,但可能有辦法在處理之前攔截手勢,然後確定它是否已開始移動滑塊,並在該情況下禁用劫持。但這很棘手。事件處理的層次結構正在與你對抗,因爲操作系統首先會對手勢進行破解。 – jbbenni 2016-12-04 04:24:13

回答

9

Apple將此問題確認爲以前報告的當前正在調查的錯誤的副本(錯誤ID爲10170209)。

解決方法似乎現在正常運行。