@@ -312,7 +312,10 @@ - (void)commonInitWithCenterViewController:(UIViewController *)centerController
312
312
_openSlideAnimationDuration = 0.3 ;
313
313
_closeSlideAnimationDuration = 0.3 ;
314
314
_offsetOrientation = IIViewDeckHorizontalOrientation;
315
-
315
+
316
+ _disabledPanClasses = [NSMutableSet setWithObject: [UISlider class ]];
317
+ II_RETAIN (_disabledPanClasses);
318
+
316
319
_delegate = nil ;
317
320
_delegateMode = IIViewDeckDelegateOnly;
318
321
@@ -1800,6 +1803,25 @@ - (void)rightViewPushViewControllerOverCenterController:(UIViewController*)contr
1800
1803
}];
1801
1804
}
1802
1805
1806
+ #pragma mark - disable pan over certain controllers
1807
+
1808
+ - (void )disablePanOverViewsOfClass : (Class )viewClass {
1809
+ return [_disabledPanClasses addObject: viewClass];
1810
+ }
1811
+
1812
+ - (void )enablePanOverViewsOfClass : (Class )viewClass {
1813
+ return [_disabledPanClasses removeObject: viewClass];
1814
+ }
1815
+
1816
+ - (BOOL )canPanOverViewsOfClass : (Class )viewClass {
1817
+ return [_disabledPanClasses containsObject: viewClass];
1818
+ }
1819
+
1820
+ - (NSArray *)viewClassesWithDisabledPan {
1821
+ return [_disabledPanClasses allObjects ];
1822
+ }
1823
+
1824
+
1803
1825
#pragma mark - Top Side
1804
1826
1805
1827
- (BOOL )toggleTopView {
@@ -2353,14 +2375,18 @@ - (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)panner {
2353
2375
}
2354
2376
2355
2377
- (BOOL )gestureRecognizer : (UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch : (UITouch *)touch {
2378
+ // allow the panningGestureDelegate to act first
2356
2379
if (self.panningGestureDelegate && [self .panningGestureDelegate respondsToSelector: @selector (gestureRecognizer:shouldReceiveTouch: )]) {
2357
2380
BOOL result = [self .panningGestureDelegate gestureRecognizer: gestureRecognizer
2358
2381
shouldReceiveTouch: touch];
2359
2382
if (!result) return result;
2360
2383
}
2361
-
2362
- if ([[touch view ] isKindOfClass: [UISlider class ]])
2363
- return NO ;
2384
+
2385
+ // check the disabled pan classes
2386
+ for (Class viewClass in _disabledPanClasses) {
2387
+ if ([[touch view ] isKindOfClass: viewClass])
2388
+ return NO ;
2389
+ }
2364
2390
2365
2391
_panOrigin = self.slidingControllerView .frame .origin ;
2366
2392
return YES ;
0 commit comments