2014-03-24 2 views
0

을 때보기 전환이 더듬은 전환이 문제없이 매우 부드러운 갔다 이제 키보드가 여기에 아이폰 OS

CGPoint c = thepoint; 
CGFloat tx = c.x - floorf(theview.center.x) + 10; 
CGFloat ty = c.y - floorf(theview.center.y) + 100; 

[UIView animateWithDuration:0.5 
         delay:0.0 
        options:UIViewAnimationOptionCurveEaseOut 
       animations:^{ 
        // Transforms 
        CGAffineTransform t = CGAffineTransformMakeTranslation(tx, ty); 
        t = CGAffineTransformScale(t, 0.1, 0.1); 
        theview.transform = t; 
        theview.layer.masksToBounds = YES; 
        [theview setTransform:CGAffineTransformIdentity]; 

       } 
       completion:^(BOOL finished) { 

       }]; 

ViewA

에서 ViewB를보기 위해 내가 가진 전환 코드입니다.

내 ViewB에서 기본 포커스가있는 텍스트 상자가 있습니다.

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:NO]; 
    [self performSelector:@selector(focusCommentText) withObject:nil afterDelay:0.5]; 
} 

- (void) focusCommentText { 
[self focusTextbox:commentText]; 
} 

- (void) focusTextbox : (UITextView *) textView{ 
    @try { 
     [ textView becomeFirstResponder]; 
    } 
    @catch (NSException *exception) { 

    } 
} 

(viewDidAppear 년)의 전환 및 키보드 .. .. 같은 시간에 일어나는 그리고 지금 약간 어색 올라오고. 어떤 사람이 나를 여기서 도울 수 있니?

+1

두 세대의 애니메이션을 현재의 하드웨어에서 우수한 성능으로 동시에 실행할 수 없다는 것을 의미합니다. 이 두 애니메이션을 동시에 수행하지 않는 방법을 찾아야합니다. –

+0

@AbhiBeckert 당신이 옳았어요 !!! 나는 당신이 말한대로 내 코드를 수정했다. 그리고 나는 그것을 새로운 대답으로 게시했다. 당신의 도움을 주셔서 감사합니다! –

+0

당신이 그 일을 끝내면 매트 답이 아닌 받아 들인 대답으로 표시해야합니다. –

답변

0

편집 : 실제로 살인자는 내보기의 배경색이 알파 0.8로 투명합니다. 일단 내가 불투명 해지면 (알파 = 1.0), 애니메이션은 부드럽습니다 !!


애니메이션 완료 후에 만 ​​텍스트 상자의 초점을 맞추기 위해 코드를 수정했습니다. CATransition 사용

CGPoint c = thepoint; 
CGFloat tx = c.x - floorf(theview.center.x) + 10; 
CGFloat ty = c.y - floorf(theview.center.y) + 100; 

[UIView animateWithDuration:0.5 
         delay:0.0 
        options:UIViewAnimationOptionCurveEaseOut 
       animations:^{ 
        // Transforms 
        CGAffineTransform t = CGAffineTransformMakeTranslation(tx, ty); 
        t = CGAffineTransformScale(t, 0.1, 0.1); 
        theview.transform = t; 
        theview.layer.masksToBounds = YES; 
        [theview setTransform:CGAffineTransformIdentity]; 

       } 
       completion:^(BOOL finished) { 
        if(theview.tag == 1000) { 
         if(myVC != nil) 
          [myVC focusCommentText]; /// Here is where I set focus 
        } 
       }]; 

은, 내가 선택해야 대리자 animationDidStop입니다.

CATransition *transition = [CATransition animation]; 
    transition.duration = 0.4; 
    transition.type = kCATransitionFromRight; //choose your animation 
    transition.subtype = kCATransitionFade; 
    transition.delegate = self; //Setting Delegate as Self 

    [self.view.layer addAnimation:transition forKey:nil]; 
    [self.view addSubview:myVC.view]; 


#pragma mark - CATransition Delegate 
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag 
{ 
    if(myVC != nil) { 
     [myVC focusCommentText]; 
    } 
} 
1

는 내가 뭘 할 것은 전환이 을 완료 후 까지 하지 전화 [textView becomeFirstResponder]입니다.

+0

고마워요! ** 애니메이션 **의 완성과 ** CATransition **에 초점을 맞추기 위해 코드를 수정했습니다. 위임자 인'animationDidStop'에서도 같은 코드를 구현했습니다. –