2013-03-30 55 views
0

在我看來,我在右邊的部分中有3個UISlider,在左邊部分,用戶可以用UIPanGestureRecognizer滑動菜單。有時,當用戶使用滑塊時,也會拖動視圖。我不希望發生這種情況。我在我的PanLayer方法中有這樣的代碼:將UIPanGestureRecognizer限制在特定區域

- (IBAction)panLayer:(UIPanGestureRecognizer *)pan { 

if (pan.state == UIGestureRecognizerStateChanged) { 
    CGPoint point= [pan translationInView:self.topLayer]; 
    CGRect frame = self.topLayer.frame; 
    frame.origin.x = MIN(258.0f, self.layerPosition + point.x); 
    if (frame.origin.x < 0) frame.origin.x = 0; 
    self.topLayer.frame = frame; 
} 
if (pan.state == UIGestureRecognizerStateEnded) { 
    if (self.topLayer.frame.origin.x <=160) { 
     [self animateLayerToPoint:0]; 
    } 
    else { 
     [self animateLayerToPoint:VIEW_HIDDEN]; 
    } 
} 


} 

我想創建一個帶有x位置的if語句。事情是這樣的:

if (firstTouch.x < 150 && firstTouch.x > 0) { 
    //Add my previous code 
} 

如何訪問到firstTouch在視圖中,如果是在這一領域,運行UIPanGestureRecognizer?

感謝

回答

1

這可以通過採用UIGestureRecognizerDelegate和執行下面的方法可以輕鬆實現:

-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch 
{ 
    return touch.view != myUISlider; 
} 
+0

我如何能在同一時間將此更UISliders任何想法? – BalestraPatrick

+0

@patapple你可以返回![touch.view isKindOfClass:[UISlider class]]使它適用於你應用中的所有UISliders。 – soheilpro