2009-08-11 5 views
0

접촉을 registerring UITextView. MainViewController는 인스턴스 변수로 canvasView라는 뷰를 가지고 있습니다. canvasView에는 hiddenTextView라는 UITextView가 있습니다.아이폰 수동 나는 현재이 구조와 응용 프로그램에서 일하고 있어요

기타 보이지 않는보기 등으로 UITextView가 처음으로 접촉을 등록한 것은 아닙니다.

이 구성에서 UITextView를 어떻게 등록 할 수 있습니까? 구체적으로 autoCorection 상자 (실제로는 한자 선택을위한 선택)에서 선택하지만, 비슷한 메커니즘으로 가정합니다.

이 나는 ​​시도했다 :

는 [canvasView.hiddenTextView touchesBegan는 : 접촉 withEvent : 이벤트] MainViewController의 touchesbegan 방법에서

. 나는이 일을 베간 (Began), 감동 (Goed), 종결 (Ended)로했습니다.

50 개 정도의 실행 중 하나에 대해 실제로 작동했다고 생각하지만 변경된 사항을 알지 못합니다.

어떻게 작동시킬 수 있습니까?

답변

0
[canvasView.hiddenTextView becomeFirstResponder]; 

아마도 당신이 원하는대로 할 것입니다.

iPhone의 반응 체인은 약간 까다 롭습니다. 컨트롤이 겹치는 것을 피하는 것이 일반적으로 더 쉽다는 것을 알았습니다. 그래서 어떤 주어진 인스턴스에서 어떤 컨트롤이 어떤 접촉에서 입력을 받아야하는지에 대해 완전히 모호합니다.

많은 컨트롤이 겹쳐져 있고 어떤 컨트롤이 숨겨 지거나 표시되는지 종종 전환되는 경우 이는 더 많은 서브 클래스 인 UIViewController을 구현하는 것일 수도 있다는 좋은 신호이며 스왑 아웃 대신 전환합니다. 및 컨트롤. 또 다른 옵션은 UIView의 커스텀 서브 클래스를 만들고 그 대신에 스왑하고 바꾸는 것입니다. 실제로는 서브 뷰 (숨기지 않는)에서 이전 것을 제거하고 새로운 것을 추가하는 것입니다.

물론 숨기기/표시가 서브 클래 싱보다 훨씬 쉽습니다.

도움이 되었기를 바랍니다. 참조 : Apple's UIResponder docs. UIViewController 또는 UIViewUIResponder의 하위 클래스입니다.

+0

UITextView는 이미 그 시점에서 첫 번째 응답자입니다. 키보드는 모든 기능을 갖추고 있습니다. 어쨌든 시도해 보았지만 여전히 아무것도 아니 었습니다. ( 나는 [[self nextResponder] touchesBegan .....]을 사용해 보았습니다. 다른 레이어로 넘어가는 다른 경우에는 저에게 효과적 이었지만 이번에는 그렇지 않았습니다. – kiyoshi

+0

또 다른 아이디어 : 귀하의 UITextView와 superviews의 프레임을 다시 확인하십시오. 내 컨트롤이 명확하게 볼 수 있지만 터치를 얻지 못하는 경우가있었습니다. 프레임의 크기가 (0,0) – Tyler

+1

안녕 타일러, 통해 답변 주셔서 감사합니다 난 그냥 상단보기 컨트롤러에 모든 hiddenTextView 물건을 이동하고 있는지 확인하고 숨겨진 텍스트보기가 있는지 확인했다 응답자가 프레임에 감동을하지 않는 것처럼 보인다. 최전방 서브 뷰.그런 다음 UIResponder 항목이 자체적으로 처리되었으며 첫 번째 응답자가 된 후에 더 이상 터치 전달이 필요하지 않았습니다. UIKit API가 좀 더 투명 해졌 으면 좋겠다. ( – kiyoshi

관련 문제