开发者

Slide textview horizontal without using paging

I`m using a simple Textview in an tabbased application to display some text :) I figerd out how to change the text animated using the following code:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:self];

// To be a swipe, direction of touch must be horizontal and long enough.
if (fabsf(startTouchPosition.x - currentTouchPosition.x) >= HORIZ_SWIPE_DRAG_MIN &&
    fabsf(startTouchPosition.y - currentTouchPosition.y) <= VERT_SWIPE_DRAG_MAX)
{
    // It appears to be a swipe.
    if (startTouchPosition.x < currentTouchPosition.x){
        NSString *string = [[NSString alloc]initWithFormat:@"..."];
        self.text = string;
    }
    else{
        CGContextRef context = UIGraphicsGetCurrentContext();
        [UIView beginAnimations:nil context:context];
        //[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:[self superview] cache:YES];
        [U开发者_StackOverflow中文版IView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:[self superview] cache:YES];
        [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
        [UIView setAnimationDuration:0.5];
        [[self superview] exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
        [UIView commitAnimations];
        [self displayNewText];
    }
}

However there is now "slide transition" defined in UIViewAnimationTransition. I know about paging, but I don`t want to use this. Is there an other possibility to have an horizontal slide animation when detecting a horizontal swipe?


I think you are almost there. Intercept touchesMoved:withEvent method just like in your current code and update the visible area of the UIScrollView object.


I hope you don't have to detect touches for your requirement use UIScrollView as parent view for UITextView.

    scroll=[[UIScrollView alloc]initWithFrame:CGRectMake(0,40, 320,200)];
    [scroll setContentSize:CGSizeMake(640, 200)];

Or if you want to animate the view you can use affine transforms.


        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:1];
        someview.transform=CGAffineTransformMakeTranslation(-100, 0);
        [UIView commitAnimations];
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜