У меня есть UIScrollView, который я использую для отображения страниц PDF.
Я не хочу использовать пейджинг (пока). Я хочу отображать контент, основанный на событии касания (так после горизонтального пролистывания).
Это работает (вроде), но вместо того, чтобы поймать один лист и показывать 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, или код «отображать следующую страницу» неправильный?