2011-11-12 1 views
0

응용 프로그램을 개발 중이고이 시나리오에서 발생하는 문제가 발생했습니다. 두 개의 단추 (button1, button2) 및 텍스트보기를 모두 하위보기로 간주하는 수퍼 뷰를 고려하십시오. 하나의 버튼을 클릭하면 텍스트보기가 표시됩니다. 텍스트 뷰 밖에서 아무 곳이나 누르면 슈퍼 뷰에서 텍스트 뷰를 닫아야합니다.iPhone에서 User Gesture를 다시 만들 수 있습니까?

슈퍼보기에 UITapGestureRecognizer를 추가했으며 메서드 tap :을 호출합니다. 탭 : 탭 꼭지점을 얻고 텍스트보기 밖에있는 경우 텍스트보기를 닫고 GestureRecognizer를 제거합니다. 이제 버튼 2를 탭하면 문제가 발생합니다. 버튼 2에 대한 액션을 실행할뿐만 아니라 텍스트보기를 닫을 필요가 있습니다. 그러나 탭에 들어가기 때문에 버튼 2의 메소드를 호출하지 않습니다.

제스처 인식기를 제거한 후 동일한 좌표에서 동일한 탭을 에뮬레이션하는 것이 가능한지 알고 싶습니다. 이 문제를 해결하기 위해 내가 진행하는 방법은 무엇입니까?

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 

을하지만 내가 모르는

답변

2

아이폰에 여부를 사용자의 제스처를 재현 할 수 있습니다 내 문제 해결 NT 않지만 쉬운이 :

편집 나는 시도 주위를 돌아 다니면서 필요한 것을 성취 할 수 있습니다. 당신이 사용할 수있는 방법 당신은 UIGestureRecognizer 터치 나 제스처 인식기와 결합 방법을 실행해야 즉 수신 여부를 반환 할 수 있습니다

// called before touchesBegan:withEvent: is called on the gesture recognizer for a new touch. return NO to prevent the gesture recognizer from seeing this touch 
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 

이된다. NO을 반환하면 터치가 하위보기로 전달됩니다.

제스처 인식기의 delegate을 반드시 설정해야합니다. 및 .h 파일

터치 후 버튼 프레임 내에 있는지 확인할 수있는 UIGestureRecognizerDelegate 프로토콜을 포함하여 여기 return NO 다른 return YES 는 쉬운 방법이 거기에있는 문서 UIGestureRecognizerUIGestureRecognizerDelegate

+0

위대한 답변! 늦게 답변을 드려 죄송합니다. 일시적으로 테스트 해 볼 수있는 권한이 없습니다. 그러나 그것의 외모에서, 버튼의 메서드를 실행하는 동안 제스처 인식기에 응답하는 버튼을 원하는대로 완전히 내 문제를 해결하지 않습니다. – MadhavanRP

0

입니다 수 있습니다. 이것은 나를 위해 잘 작동합니다. "UIcontroleventTouchdown"이벤트에서 메소드를 호출하십시오.

+0

감사합니다.하지만 해당 이벤트에 버튼이 응답하지 않기를 바랍니다. – MadhavanRP