3

UIViewController가 있습니다.이 코드를 사용하여 암호를 입력 할 수있는 모달보기 컨트롤러를 제공합니다. 스토리 보드에서ModalViewController에서 돌아온 후 키보드가 나타나지 않습니다.

[self performSegueWithIdentifier:@"SeguePassword" sender:self]; 

:

스토리 보드 SEGUE 식별자 = SeguePassword 스타일 = 모달 전환 = 나는 다음이있는 모달에 "취소"를 클릭하면

을 선택하지 = 기본 애니메이션 코드 :

[self dismissViewControllerAnimated:NO completion:^{}]; 

이제 b 키보드가 숨겨져 있습니다. hide라는 버튼이있는 툴바를 표시하는 코드가 있습니다. 그리고 나는 그것을 보았지만 키보드는 보지 못했습니다.

누군가 이와 같은 문제를 해결하기 위해 취한 아이디어 나 지침이 있습니까?

나는 내가를 클릭하지만 경고 상자에 좌절의 몇 번 내가 잘못된 방향으로 키보드를 보았 기 때문에 한 후이 발견 : 그것은 최근에 내 솔루션은

아이폰 OS 7에 대한 변화를 변환 한 후 시작 보인다 . 나는 앱이 iPhone에서만 세로 인 풍경 키보드입니다.

전 :

- (NSUInteger) supportedInterfaceOrientations { 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight; 
} else { 
    **return (UIInterfaceOrientationPortrait);** 
} 

}

후 :

- (NSUInteger) supportedInterfaceOrientations { 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight; 
} else { 
    **return (UIInterfaceOrientationMaskPortrait);** 
} 

}

나는 마스크 정수를 사용하는 세로 변경하고 모든 것을 다시 일하기 시작했다.

+0

'UIKeyboardWillShow/HideNotification'을 사용 했습니까? – user2277872

+0

textBegingEdit Protocols를 사용하고 로그인 페이지에서 처음에는 잘 작동하며 키보드는 모달 암호 창에도 표시됩니다. 그러나 암호를 닫을 때 키보드에 연결된 도구 모음이 있지만 키보드가 더 이상 나타나지 않습니다. 내 노트북 ​​키보드에 입력하여 로그인 한 후 로그 아웃하면 다시 작동합니다. –

+0

'UIInterfaceOrientationPortrait'를'UIInterfaceOrientationMaskPortrait'로 변경해도 해결되었습니다. – Numereyes

답변

0

키보드는 일부 객체가 firstResponder 인 경우에만 표시됩니다. UIResponder 클래스의 문서를보십시오.

모달보기 컨트롤러에서와 같은 소리를내는 키보드를 사용하는 경우 첫 번째 응답자 상태를 취하고 원래 화면의 내용을 잃어 버리게됩니다. 모달 뷰 컨트롤러에서 동일한 상태로 돌아가려면 입력 포커스가있는 객체 (예 : firstResponder)가 보이도록 키보드를 표시하려면 해당 코드를 작성해야합니다. 당신을 어떻게 지금

[objectIWantToBeFirstResponder becomeFirstResponder]; 

: 그것은 당신의 입력 객체에 textField 또는 텍스트 뷰 또는 무엇이든을 만드는 문을 사용하여 첫 번째로 반응 할 수 있도록 모달 뷰 컨트롤러가 종료 될 때 특히, 원래 뷰 컨트롤러는 알고있다 모달보기 컨트롤러가 완료되면 알 수 있습니까? 몇 가지 확실한 기술이 있습니다.

segue를 사용하려면 모달 뷰 컨트롤러가 이어야하며 제시 컨트롤러가 명시 적으로 그것이 이라는 것을 알게해야합니다. 모달보기 컨트롤러에서 프로토콜을 정의하고 제시하는보기 컨트롤러에 을 적용 할 수 있습니다. 모달 뷰 컨트롤러가 끝내기를 원할 때 먼저 표시되는 컨트롤러에 을 알려줍니다.

아마도 세그먼트을 수동으로 트리거하고 있으므로 코드에서 모달보기 컨트롤러를 기꺼이 표현할 수 있습니다. 그렇다면 완료 블록을 사용할 수 있습니다 :

ModalViewControllerClass *vc = [[ModalViewControllerClass alloc] init]; 
    // whatever else you need to do to the vc 
    [self presentViewController:vc animated:YESorNO completion:^{ 
     // This code gets executed when the presented view controller exits 
     [objectIWantToBeFirstResponder becomeFirstResponder]; 
    }]; 
+0

답변 해 주셔서 감사합니다. 이것은 작동하지 않았지만 코드를 분석하여 구멍을 찾습니다. –

+0

좋아, 그래서 내가 원래의보기로 돌아 왔을 때 나는 viewDid에서 시도했다. [self becomeFirstResponder]에 대한 호출은 키보드가 텍스트 상자를 탭하는 것을 원하지 않기 때문에. 키보드가 보이지 않더라도 빈 ID로 로그인을 클릭하면 UIAlertBox가 표시되고 키보드의 절반이 가로보기로 표시되는 반면 세로는 항상 iPhone 버전입니다. –

+0

일단 찾으면 이것이 바보 같은 오류라고 확신합니다. –