1

我有一個UITableView,我想附加一個UIPanGestureRecognizer到每個單元,這是ULCableViewCells - ArticleCells的子類。在awakeFromNib方法中,我添加了平移手勢識別器,但它永遠不會觸發。爲什麼?爲什麼我的UIPanGestureRecognizer未被檢測到並觸發該方法?

- (void)awakeFromNib { 
    [super awakeFromNib]; 

    self.cellBack = [[CellBack alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, 80)]; 
    [self.contentView addSubview:self.cellBack]; 

    self.cellFront = [[CellFront alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, 80)]; 
    [self.contentView addSubview:self.cellFront]; 

    UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pannedCell:)]; 
    panGestureRecognizer.delegate = self; 
} 

這應該是解僱這種方法。但是我在它上面放了一個斷點,它永遠不會被解僱。

- (void)pannedCell:(UIPanGestureRecognizer *)recognizer { 
    if (recognizer.state == UIGestureRecognizerStateBegan) { 
     _firstTouchPoint = [recognizer translationInView:self]; 
     NSLog(@"fired"); 
    } 
    else if (recognizer.state == UIGestureRecognizerStateChanged) { 
     NSLog(@"fired"); 
     CGPoint touchPoint = [recognizer translationInView:self]; 

     // Holds the value of how far away from the first touch the finger has moved 
     CGFloat xPos; 

     // If the first touch point is left of the current point, it means the user is moving their finger right and the cell must move right 
     if (_firstTouchPoint.x < touchPoint.x) { 
      xPos = touchPoint.x - _firstTouchPoint.x; 

      if (xPos <= 0) { 
       xPos = 0; 
      } 
     } 
     else { 
      xPos = -(_firstTouchPoint.x - touchPoint.x); 

      if (xPos >= 0) { 
       xPos = 0; 
      } 
     } 

     if (xPos > 10 || xPos < -10) { 
      // Change our cellFront's origin to the xPos we defined 
      CGRect frame = self.cellFront.frame; 
      frame.origin = CGPointMake(xPos, 0); 
      self.cellFront.frame = frame; 
     } 
    } 
    else if (recognizer.state == UIGestureRecognizerStateEnded) { 
     [self springBack]; 
    } 
    else if (recognizer.state == UIGestureRecognizerStateCancelled) { 
     [self springBack]; 
    } 
} 

而在我添加的.h文件中,所以會通知它執行它。但它從來沒有像我說的那樣稱呼它。

爲什麼?

回答

2

你這樣做了嗎?

[self.contentView addGestureRecognizer:panGestureRecognizer]; 
+0

不工作在這種情況下 – ChaubeyJi 2016-09-27 07:35:14

相關問題