2010-05-25 60 views
0

我有一個UIScrollView,我用來顯示PDF頁面。 我不想使用分頁(還)。我想根據touchesmoved事件顯示內容(所以在橫向滑動之後)。UIScrollView沒有分頁,但與touchesmoved

這個工作(有點),但不是捕捉一個單一的刷卡和顯示1頁,刷卡似乎被分解成100個部分和1個刷卡行爲,就好像你在移動一個滑塊!

我不知道我做錯了什麼。

這裏的實驗「顯示下一頁」碼單水龍頭原理:

- (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]; 
} 

這裏的刷卡代碼:

- (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內容,也許我應該把它放入UIScrollView或是「顯示下一頁」代碼錯誤?

回答

1

我想我想通了。

我加入:

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

除去[自nacrtajNovuStranicu:(CGContextRef)UIGraphicsGetCurrentContext()];來自touchesmoved方法。