2010-05-25 57 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方法。