2010-05-25 4 views
0

PDF 페이지를 표시하는 데 사용하는 UIScrollView가 있습니다. 페이징을 사용하고 싶지 않습니다. touchesmoved 이벤트를 기반으로 콘텐츠를 표시하고 싶습니다 (가로 스 와이프 이후).페이징없이 UITcrollView with touchesmoved

이 동작은 (일종의) 작동하지만, 한 번의 스 와이프 잡기와 한 페이지의 표시 대신 스 와이프가 슬라이더를 움직이는 것처럼 100 장의 조각과 1 개의 스 와이프 동작으로 분할 된 것처럼 보입니다!

내가 뭘 잘못하고 있는지 전혀 모른다. 아마도,

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


- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {  
    UITouch *touch = [touches anyObject]; 
    CGPoint currentPosition = [touch locationInView:self]; 

    CGFloat deltaX = fabsf(gestureStartPoint.x - currentPosition.x); 
    CGFloat deltaY = fabsf(gestureStartPoint.y - currentPosition.y); 

    if (deltaX >= kMinimumGestureLength && deltaY <= kMaximumVariance) { 
    [self nacrtajNovuStranicu:(CGContextRef)UIGraphicsGetCurrentContext()]; 
    } 
} 

코드가있는 UIView에 앉아 PDF 내용을 표시합니다 : 여기

- (void)nacrtajNovuStranicu:(CGContextRef)myContext 
{ 
CGContextTranslateCTM(myContext, 0.0, self.bounds.size.height); 
CGContextScaleCTM(myContext, 1.0, -1.0); 
CGContextSetRGBFillColor(myContext, 255, 255, 255, 1); 
CGContextFillRect(myContext, CGRectMake(0, 0, 320, 412)); 

size_t brojStranica = CGPDFDocumentGetNumberOfPages(pdfFajl); 

if(pageNumber < brojStranica){ 
    pageNumber ++; 
} 
else{ 
    // kraj PDF fajla, ne listaj dalje. 
} 

CGPDFPageRef page = CGPDFDocumentGetPage(pdfFajl, pageNumber); 
CGContextSaveGState(myContext); 
CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page, kCGPDFCropBox, self.bounds, 0, true); 
CGContextConcatCTM(myContext, pdfTransform); 

CGContextDrawPDFPage(myContext, page); 
CGContextRestoreGState(myContext); 
//osvjezi displej 
[self setNeedsDisplay]; 
} 

스 와이프 코드 것 :

여기에 하나의 탭에서 작동 실험 "디스플레이 다음 페이지의"코드는 UIScrollView에 배치해야합니까? 아니면 "다음 페이지 표시"코드가 잘못 되었습니까?

답변

1

나는 그것을 이해했다고 생각합니다.

제가 첨가 :

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self nacrtajNovuStranicu:(CGContextRef)UIGraphicsGetCurrentContext()]; 
[self setNeedsDisplay]; 
} 

제거 [자기 nacrtajNovuStranicu (CGContextRef) UIGraphicsGetCurrentContext()]; touchesmoved 방법에서.

관련 문제