2

나는 UITextField을 추가 한 UIView Subclass입니다. 이 뷰를 ViewController의 상위 뷰로 설정했습니다. UIViewSubclass에서 사용자 정의 키보드를 제공하기 위해 inputViewController getter를 재정의했습니다.superview의 inputViewController는 서브 뷰 (UITextView)에서 도청 될 때 호출됩니다.

UITextField을 선택할 때 becomeFirstResponderUITextField이라고 가정하고 이에 연결된 키보드가 표시됩니다. 그러나이 외에도 UIView Subclass에 대한 inputViewController 메서드가 호출되어 텍스트 필드와 UIView의 입력보기가 서로 위에 표시되도록합니다. 나는 또한 UIView's subclasscanBecomeFirstResponder 또는 becomeFirstResponder이 호출되는 것을 보지 못했습니다. inputViewController 메서드 만 호출되고 사용자 지정 키보드가 나타납니다.

누구나 내가 이 첫 번째 응답자가되지 않아도 UIView's subclass에 전화를 걸리는 이유를 이해할 수 있습니까?

UPDATE 사과 문서에서 -. 은 "입력보기 텍스트보기 또는 사용자 정의보기의 inputView 속성에 할당 된 시스템 키보드를 대체가 입력 의견이있는 경우, UIKit은 스왑 수있는 심지어 텍스트 객체가 첫 번째 응답자 일 때도 키보드가 아닌 객체에 대해 개발자를 대신하여 키보드와 같은 입력보기를 표시 할 수 있습니다. "

만약 내가 이것을 정확하게 이해한다면 UIResponder가 UIView 서브 클래스에서 inputViewController를 호출하는 것이 타당하지만 inputViewController를 사용하여 textfields 키보드를 바꿔야한다고 생각하십니까? 분명히 그것은 여기서 일어나지 않습니다.

+0

해결 방법을 찾으셨습니까? – aunindo

답변

0

inputViewController를 덮어 쓰는 UIView 하위 클래스를 특별히 사용하고 있습니까? 대신 UITextField를 하위 클래스로 만든 다음 UITextField 하위 클래스에서 inputViewController를 재정의 할 수 있습니다.

+0

처음 응답자가되기 위해 UIView가 필요할 때가 있고, 첫 번째 응답자가 될 때 자체 사용자 지정 키보드가 있습니다. UITextfield를 하위 클래스 화하여이 작업을 수행 할 수 없습니다. – user2990765