문제

현재이 구조가있는 앱을 작업하고 있습니다.

Application의 모든 터치 이벤트를 처리하는 MainViewController라고 부르는 View Controller가 있습니다. MainViewController는 인스턴스 변수, CanvasView라는 뷰를 가지고 있습니다. CanvasView는 HiddentExtView라는 UitextView로 제공됩니다.

다른 보이지 않는 견해와 그와 같은 uitextView는 터치를 가장 먼저 등록하지 않습니다.

이 구성에서 UitextView가 터치를 등록하도록하려면 어떻게해야합니까? 특히 자동 구동 상자에서 선택을하기 위해 (실제로는 일본 간지 선택을위한 것이지만 비슷한 메커니즘이라고 가정합니다).

난 노력 했어:

canvasview.hiddentextview touchesbegan : touches withevent : 이벤트

MainViewController의 TouchesBegan 메소드에서 나는 Touchesbegan을 위해이 작업을 수행하고 움직여서 끝났다.

나는 그것이 내가 시도한 50 개 정도의 실행 중 하나에서 실제로 효과가 있다고 생각하지만, 무엇이 바뀌 었는지 모르겠습니다.

이 작업을 수행 할 수있는 방법에 대한 아이디어가 있습니까?

도움이 되었습니까?

해결책

[canvasView.hiddenTextView becomeFirstResponder];

아마 당신이 원하는 것을 할 것입니다.

iPhone의 응답자 체인은 약간 까다로운 것입니다. 나는 일반적으로 겹치는 컨트롤을 피하는 것이 더 쉽다는 것을 알게되므로 특정 인스턴스에서 어떤 컨트롤이 터치를 입력 해야하는지에 대해 완전히 모호하지 않습니다.

많은 컨트롤이 겹치거나 종종 숨겨져 있거나 눈에 띄는 컨트롤을 전환하는 경우 더 많은 서브 클래스를 구현하고 싶을 수도 있다는 좋은 신호입니다. UIViewController, 그리고 out을 바꾸지 않고 컨트롤을 바꾸지 않고 전환합니다. 또 다른 옵션은 사용자 정의 서브 클래스를 만드는 것입니다 UIView 그리고 대신 안팎으로 교환하십시오. 즉, 실제로 하위 뷰에서 이전 예를 제거하고 새 것을 추가합니다.

물론, 숨기기/표시가 서브 클래싱보다 훨씬 쉬운 경우가 있습니다.

도움이되기를 바랍니다. 참조: 애플 UIResponder 문서. (이에 주목하십시오 UIViewController 또는 UIView 서브 클래스입니다 UIResponder.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top