簡體   English   中英

將觸摸從uiview轉移到uiscrollview

[英]Transfer touches from uiview to uiscrollview

我在UIView(紅色)中有一個UIScrollview(帶有圖像)。

UIView-{0,0,320,236} UIScrollview-{0,8,300,220}

在此處輸入圖片說明

在此處輸入圖片說明

在我的uiview中,我很感動。

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

我需要將觸摸從UIView轉移到UIScrollview。 (例如,如果用戶從uiview的右側向左滑動,則uiscrollview應與用戶觸摸同步向左滾動)。 我可以知道怎么做嗎?

這個想法是在UIView中獲得對scrollView的引用,計算x接觸增量,並相應地調整scrollView的contentOffset屬性。

因此,在您的UIView類中:

@implementation MyView{
  CGPoint _startPosition;
  CGPoint _previousPosition;
}

在您的計算機中初始化以上變量

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  UITouch *touch = [touches anyObject];
  _startPosition = [touch locationInView:self];
  _previousPosition = _startPosition;
}

然后觸摸一下

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

UITouch *touch = [touches anyObject];
CGPoint currentPosition = [touch locationInView:self.scrollView];


if(!CGPointEqualToPoint(_previousPosition, _startPosition)){
    CGFloat deltaX = _previousPosition.x-currentPosition.x;

    [UIView animateWithDuration:0.1 animations:^{
        //
        self.scrollView.contentOffset = CGPointMake(self.scrollView.contentOffset.x +
                                                    deltaX, self.scrollView.contentOffset.y);
    }];


}
_previousPosition = currentPosition;
}

在動畫塊中調整scrollView.contentOffset以使滾動平滑。

鏈接到正在運行的項目: https : //github.com/sliaquat/stack_overlfow_answer_28036976

暫無
暫無

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

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