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에 배치해야합니까? 아니면 "다음 페이지 표시"코드가 잘못 되었습니까?