2014-10-17 5 views
0

UITextField가 포함 된 뷰를 표시하려고하며 becomeFirstResponder 메시지와 함께 키보드를 자동으로 표시합니다. iOS 7에서는 문제가 없습니다. 그러나 iOS8 이후로는 작동하지 않습니다.UITextField becomeFirstResponder 블록 애니메이션

- (void)manageViewPopOver:(UIView *)view withCGPoint:(CGPoint)point { 
[UIView animateWithDuration:0.3 
         delay:0.1 
        options:UIViewAnimationOptionCurveLinear 
       animations:^{ 
        CGRect frame = view.frame; 
        frame.origin.y = point.y; 
        frame.origin.x = point.x; 
        view.frame = frame; 
       } 
       completion:nil]; 

}

문제는 다음과 같습니다 : 때 애니메이션보기를 보여

- (void)showViewAddScore{ 
if(!self.viewPopOver){ 
    //a l'initialisation de la vue, on design le contour 
    self.viewPopOver = [self.view viewWithTag:100]; 
    self.viewPopOver.layer.cornerRadius = 8; 
    self.viewPopOver.layer.masksToBounds = YES; 
    self.viewPopOver.layer.borderWidth = 1; 
    self.viewPopOver.layer.borderColor = [[UIColor colorWithRed:8.0/255 green:65.0/255 blue:32.0/255 alpha:1] CGColor]; 
} 
//deplacement de la vue 
CGPoint point; 
point.x = self.viewPopOver.frame.origin.x; 
point.y = 300; 
[self manageViewPopOver:self.viewPopOver withCGPoint:point]; 
[self.textfieldAddScore becomeFirstResponder]; 

}

그리고 방법 나는이 같은 뷰를 구성하고있어 처음으로 showViewAddScore 메서드를 호출하면 키보드가 보이지만 보이지는 않습니다. 메서드를 두 번째 호출하면 뷰가 표시됩니다. 그리고 [self.textfieldAddScore becomeFirstResponder]; 줄을 삭제하면 메서드를 처음 호출 할 때보기가 표시됩니다. 그래서 [self.textfieldAddScore becomeFirstResponder]; 및 애니메이션에 문제가 있습니다. 애니메이션 이후에 선을 이동 시키려고했지만 문제가 계속됩니다.

도움 주셔서 감사합니다.

+0

프로그래밍 방식으로 또는 스토리 보드를 통해 viewPopOver를 추가하고 있습니까? – Yan

+0

나는 당신의 코드를 시험해 보았다. 문제가없는 iOS 8에서 작동한다. 그것을 디버그하고 point.y = 300의 중단 점을 설정하고 self.viewPopOver가 처음에는 0이 아니고 점이 올바르게 설정되었는지 확인하십시오. – Yan

+0

안녕하세요, 저는 스토리 보드에 viewPopOver를 만들고 표시했습니다. 애니메이션과 함께. 디버그 모드에서 처음에는 뷰가 nil이 아닙니다. 하지만 두 번째 탭에서만 나타납니다. self.textfieldAddScore becomeFirstResponder라는 줄을 삭제하면 첫 번째 탭에 나타납니다. 그래서 iOS8 :-(나는이 문제를 해결하는 방법을 모르겠다. –

답변

0

enter image description here

당신이 becomeFirstResponder가 공중 납치 꽤 ~ 내 기가 + 장치 150ms의의 주요 스레드의 것을 볼 수 있습니다 악기를 사용.

 // Preloads keyboard so there's no lag on initial keyboard appearance. 
     let lagFreeField: UITextField = UITextField() 
     self.window?.addSubview(lagFreeField) 
     lagFreeField.becomeFirstResponder() 
     lagFreeField.resignFirstResponder() 
     lagFreeField.removeFromSuperview() 

아니면 UI 작업은 바람직 완료 블록에서 becomeFirstResponder를 호출 할 때까지 기다립니다 : 당신이 할 수있는 것은 같은 앱 위임에 "가짜"텍스트 뷰 예비로드하는 것입니다. 나는 나중에 AppDelegate를 지저분하지 않게 선택하고 이전은 "hacky"솔루션입니다.

관련 문제