Я сам создаю простую программу для чтения PDF.
Хорошо работает в симуляторах и iphone, ipad. Но у меня была проблема.
Сгибание страницы работает хорошо, но если вы прекратите касание, страница сразу же перевернется.
С момента окончания сенсорного события я хочу анимацию смены страницы в течение 0,5 секунды.
Вот мой код. Спасибо.
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
filter = [[CAFilter filterWithType:kCAFilterPageCurl] retain];
[filter setDefaults];
//lastPos save the touchesBegan location;
//currentPos is a current location;
CGFloat _angleRad = angleBetweenCGPoints(currentPos, lastPos);
CGPoint fingerVector = vectorBetweenPoints(currentPos, lastPos);
float distanceVecX = -fingerVector.x/windowbounds.size.width;
if(m_bCurlprev)
{
[filter setValue:[NSNumber numberWithFloat:_angleRad] forKey:@"inputAngle"];
pdfView.layer.filters = [NSArray arrayWithObject:filter];
[filter setValue:[NSNumber numberWithFloat:distanceVecX] forKey:@"inputTime"];
}
else{
if(inputTime == 0)
[self addSubview:forwardPDFView];
[filter setValue:[NSNumber numberWithFloat:_angleRad] forKey:@"inputAngle"];
forwardPDFView.layer.filters = [NSArray arrayWithObject:filter];
[filter setValue:[NSNumber numberWithFloat:distanceVecX] forKey:@"inputTime"];
}
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if ([[filter valueForKey:@"inputTime"] floatValue] >= 0.5)
{
[filter setValue:[NSNumber numberWithFloat:0.0] forKey:@"inputTime"];
if(m_bCurlprev==NO)
{
pdfView.layer.filters = nil;
[self nextView];
}
else
{
pdfView.layer.filters = nil;
[forwardPDFView removeFromSuperview];
m_bCurlprev = NO;
}
}
else if ([[filter valueForKey:@"inputTime"] floatValue] != 0.0 || m_bCurlprev==YES)
{
[filter setValue:[NSNumber numberWithFloat:0.0] forKey:@"inputTime"];
if(m_bCurlprev==YES)
{
pdfView.layer.filters = nil;
[forwardPDFView removeFromSuperview];
[self prevView];
m_bCurlprev = NO;
}
else
{
pdfView.layer.filters = nil;
}
}
}