2010-08-19 5 views
4

UIButton과 UIView가 있습니다. 보기가 단추 위에 있으며 크기가 단추보다 큽니다. 뷰 자체는 터치 이벤트를 받아들이려는 것입니다. 터치에 대한 모든 일반적인 버튼 시각적 변경이 일어나도록 버튼에 전달하려고합니다.다른 UIView에서 UIButton으로 어떻게 전달할 수 있습니까?

내 UIView는 touchesBegan/Moved/Ended/Cancelled를 구현하고 동일한 인수를 사용하여 단추에서 동일한 메서드를 호출합니다. 그러나 버튼이 반응하지 않습니다.

UIView에서 터치 메소드가 실제로 호출되도록했습니다.

내가 여기에 놓치거나 제어 메시지를 전달하는 더 좋은 방법이 있습니까? 아니면 이것이 작동하지 않아야하는 좋은 이유가 있습니까?

감사합니다.

[참고 :보기 + 버튼 디자인에 대한 해결 방법을 찾고 있지 않습니다. 요구 사항이라고 가정 해 봅시다. 다른 컨트롤에 대한 터치 프록시 인 컨트롤의 개념에 관심이 있습니다. 감사합니다.]

답변

8

단추가 포함 된 ContainerView을 만들고 hitTest:withEvent:을 재정 의하여 UIButton 인스턴스를 반환합니다.

+0

훌륭해, 고마워. –

+0

이 답변은 놀랍습니다. UIKit을 사용하여 많은 문제를 해결하는 관문입니다. hitTest를 재정 의하여 모든 이벤트에 반응 할 수 있습니다. 아주 훌륭합니다. 감사 +1! –

0

메소드가 호출되고 있습니까? userInteractionEnabled = YES로 설정하지 않으면 작동하지 않습니다.

나는 이러한 터치 포워딩을 문제없이 사용했기 때문에 내가 보는 문제를 왜보고 있는지 잘 모르겠습니다.

+0

예, 메서드가 예상대로 호출되고 있습니다. 접촉 이외의 다른 메시지를 전달 했습니까? 전달 대상은 UIButton입니까? 또는 다른 것? 감사. –

+0

UIButton이 아니 었습니다. 내가 생각하기에 "긴 터치"인식 때문이었습니다. 그러나 나는 적어도 두 번 썼습니다. 그래서 나는 무언가를 잊어 버렸을 것입니다. –

관련 문제