2012-01-25 65 views
1

我有這樣的代碼對我touchesMoved但其他人喜歡它不工作的UIScrollView目標C:畫(寫)上觸摸一個UIScrollView

這,我touchesMoved:

touchSwiped = YES; 

    currentTouch = [touch locationInView:self.view]; 
    currentTouch.y -= 5; 

    UIGraphicsBeginImageContext(self.view.frame.size); 
    [writeView.image drawInRect:CGRectMake(0, 0, 768, 1024)]; 

    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetLineCap(context, kCGLineCapRound); 
    CGContextSetLineWidth(context, 15); 
    CGContextSetRGBStrokeColor(context, 0, 0, 0, 1); 
    CGContextSetBlendMode(context, kCGBlendModeNormal); 
    CGContextMoveToPoint(context, endPoint.x, endPoint.y); 
    CGContextAddLineToPoint(context, currentTouch.x, currentTouch.y); 
    CGContextStrokePath(context); 
    writeView.image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    endPoint = currentTouch; 

    touchMoved++; 

    if (touchMoved == 10) { 
     touchMoved = 0; 
    } 

所以,我使用手勢識別器轉移它,但仍然無法正常工作。

我使用的PanGestureRecognizer

這裏:

- (void) writePan:(UIPanGestureRecognizer *)writingRecognizerP { 
    switch (writingRecognizerP.state) 
    { 
     case UIGestureRecognizerStateChanged: 

      [scrollView setScrollEnabled:NO]; 
      [scrollView setUserInteractionEnabled:NO]; 

      touchSwiped = YES; 

      currentTouch = [writingRecognizerP locationInView:scrollView]; 
      currentTouch.y -= 5; 

      UIGraphicsBeginImageContext(self.view.frame.size); 
      [writeView.image drawInRect:CGRectMake(0, 0, 768, 1024)]; 

      CGContextRef context = UIGraphicsGetCurrentContext(); 

      CGContextSetLineCap(context, kCGLineCapRound); 
      CGContextSetLineWidth(context, 15); 
      CGContextSetRGBStrokeColor(context, 0, 0, 0, 1); 
      CGContextSetBlendMode(context, kCGBlendModeNormal); 
      CGContextMoveToPoint(context, endPoint.x, endPoint.y); 
      CGContextAddLineToPoint(context, currentTouch.x, currentTouch.y); 
      CGContextStrokePath(context); 
      writeView.image = UIGraphicsGetImageFromCurrentImageContext(); 
      UIGraphicsEndImageContext(); 

      endPoint = currentTouch; 

      touchMoved++; 

      if (touchMoved == 10) { 
       touchMoved = 0; 
      } 


      break; 

     case UIGestureRecognizerStateEnded: 
      [scrollView setScrollEnabled:YES]; 
      [scrollView setUserInteractionEnabled:YES]; 
      break; 

    } 

} 

人誰擁有一個想法,我將如何能夠在觸摸寫?

它將不勝感激! :)

+0

什麼是writeView?它在視圖層次結構中與自我的關係是什麼? – iccir

+0

這是一個清晰的UIImageView,它是繪圖出現的地方。 – Crisn

+0

如果你的NSLog(@「%@」,writeView),它在視圖層次結構中是否正確並且大小正確? – iccir

回答

0

你應該在-drawRect:做所有你的繪圖,當有什麼變化發送你的視圖-setNeedsDisplaysetNeedsDisplayInRect:消息。