문제

디버그 모드를 구축 할 때 iPhone을 위해 구축 한 사용자 정의 컨트롤이 완벽하게 작동하지만 릴리스 모드에서 내장 된 경우에만 작동하는 이상한 문제가 있습니다.

메인 래퍼 뷰는 서브 클래스입니다 UIView 또한 하위 뷰로 추가되는 "버튼"행이 포함되어 있습니다. 사용자 정의 버튼 클래스가 확장됩니다 UIImageView 다음 서명으로 터치 방법을 무시하고 있습니다.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

디버그 코드를 구축 할 때, 이러한 4 가지 기능은 모두 릴리스 빌드를 통해 예상 할 때까지 호출됩니다. 각각에 로그를 작성했으며 로그 메시지가 없습니다 (다른 로깅이 작동합니다).

또 다른 흥미로운 점은 래퍼 뷰 클래스에서 T 래퍼 클래스에서 이러한 메소드를 댓글을 달아 버튼에 영향을 미쳤는지 확인하려고했지만 그렇지 않았습니다.

나는 또한 변경을 시도했습니다 UIImageView 클래스는 서브 클래스입니다 UIButton 대신 터치 푸핀 사이드와 같은 이벤트를 포함하여 동일한 문제가 있습니다. 디버그에서 작동하지만 출시되지는 않습니다.

나는이 문제를 연구하고 일반 이벤트 처리를 시도했으며 빈손으로 나왔습니다. 다음에 어디를 볼지 아이디어가 있습니까?

도움이 되었습니까?

해결책

마침내 문제를 알아 냈습니다. "버튼"항목의 래퍼는 높이가 0입니다. 디버그 모드에서 앱은 버튼이 부모보기의 히트 영역 안에 있지 않더라도 터치하고 있음을 알아 냈습니다 ( ClipStobounds는 기본적으로 기본적으로 없어 버튼 항목이 여전히 완벽하게 표시되었습니다.

바라건대 이것은 일부 사람들이 내가 겪어야 할 머리 긁힘 및 디버깅 시간을 절약하는 데 도움이 될 수 있기를 바랍니다. :) 나는 또한 이것을 Apple의 버그에 게시 했으므로 언젠가 고정 될 수 있기를 바랍니다.

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