2015-01-08 2 views
0

iOS7 이전 버전에서는 inputView 속성을 UIView으로 설정하여 앱에서 맞춤 키보드를 구현할 수있었습니다. 장치가 회전 할 때, 나는 inputView의 프레임의 높이를 가로 또는 세로 키보드의 높이로 재설정하면 키보드 높이가 올바르게 업데이트됩니다.UIView inputView 대 inputViewController

iOS8에서이 모든 것은 깨졌습니다. inputView의 프레임에 대한 변경 사항은 무시됩니다. 나는 inputView의 자동 크기 조정 마스크와 자동 레이아웃 제약 조건을 조정하려고했지만 다른 방법으로도 실패합니다.

사용자 정의 키보드를 구현하려면 (시스템 전체 키보드가 아닌 경우에도) UIInputViewControllerUIInputView의 하위 클래스를 지정해야합니까? 이 문제를 지원하는 Apple 문서에서 아무 것도 찾을 수 없지만 그럴 수도 있습니다.

+0

iOS 8의 사용자 정의 키보드에 대한 접근 방식이 Apple에서 이제 Extensions를 통해 사용자 정의 키보드를 사용할 수 있도록 제공해야하므로 확실하지 않습니다.이러한 접근 방식으로 전체 키보드를 디자인 할 수 있습니다. –

+0

이것을 알아 냈습니까? – slik

답변

0

키보드 높이 문제는 iOS8 버그이며 UIInputViewController를 서브 클래 싱해도 문제가 해결되지 않습니다. UIInputViewController의 목적은 전적으로 시스템 전체 키보드를 사용하는 것입니다. Apple 상태 인 here에서는 자신의 응용 프로그램에 대해 사용자 지정 키보드를 사용하는 경우에만 사용하면 안됩니다.

사용자 정의 시스템 전체 키보드가 실제로 으로 변경되었는지 확인하십시오. 앱에만 맞춤 키보드를 제공하거나 앱에 맞춤 키보드로 시스템 키보드를 보완하려면 iOS SDK가 더 나은 기타 옵션을 제공합니다. 사용자 정의 입력보기 에 대한 읽기 및 텍스트의 데이터 입력에 대한 사용자 정의보기의 액세서리보기 입력 iOS 용 프로그래밍 안내서.

궁극적으로, 나는 아이폰 OS 시스템 키보드를 죽겠다 및 사용자 정의 코드를 작성, 인/아웃에서 애니메이션, 내 자신의 키보드보기 구조를 생성하여 시스템 키보드를 모방 한 구조를 구축하여 내 자신의 iOS8의 솔루션을 개발하도록 강요했다 일반적으로 키보드를 닫는 시스템 이벤트에 응답하는 것입니다. 이는 특히 맞춤 키보드가 iOS8의 가장 중요한 새로운 기능 중 하나가되어야 할 때 Apple이 iOS8에 허용 한 매우 끔찍하고 값 비싼 버그입니다.

+0

이것은 사실이 아닙니다. UIInputViewController를 사용하여 키보드 나 다른 입력보기를 사용하면 응용 프로그램 내에서만 나타납니다. 그리고 크기 문제를 해결합니다. 예를 들어, 키보드의 높이를 제약 조건으로 안쪽에서 바깥쪽으로 설정 (변경) 할 수 있습니다. – matt

0

사용자 정의 키보드를 구현하려면 UIInputViewController와 UIInputView를 서브 클래스해야합니다 (시스템 전체 키보드가 아닌 경우에도)?

필자는 그것이 필요한지 잘 모르겠지만, 응용 프로그램에서 사용자 지정 키보드를 만들려는 경우 UIInputViewController를 서브 클래 싱하는 것이 좋습니다. 사실, Apple은 키보드 확장을 계획하는 경우 첫 번째 단계로이를 권장합니다. 먼저 내부 키보드로 사용하고 해당 형식으로 테스트하십시오. 원하는 경우 키보드 확장으로 쉽게 마이그레이션 할 수 있습니다.

이러한 상황에서 이 아닌 하위 클래스 UIInputView를 수행하십시오. 입력보기 컨트롤러가 제공하는 입력보기를 사용합니다.

보기 컨트롤러 이보기 컨트롤러이고 회전 및 레이아웃과 관련된 표준보기 컨트롤러 이벤트를 가져 오기 때문에 이렇게하면 문제가 완전히 해결됩니다. 또한 자동 레이아웃 제한을 사용하여 입력보기를 내부적으로 배치 할 수 있으므로 키보드의 크기가 조정되면 레이아웃이 일관된 상태로 유지됩니다.

관련 문제