我有一个用于显示PDF页面的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或“显示下一页”代码错误?
答案 0 :(得分:1)
我想我已经明白了。
我补充说:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[self nacrtajNovuStranicu:(CGContextRef)UIGraphicsGetCurrentContext()];
[self setNeedsDisplay];
}
并删除[self nacrtajNovuStranicu:(CGContextRef)UIGraphicsGetCurrentContext()];来自touchesmoved方法。