iPhone 응용 프로그램에서 반응 체인이 어떻게 작동하는지 정확하게 이해하는 데 어려움이 있습니다.이전 firstResponder를 복원하는 방법은 무엇입니까?
내 상황은 다음과 같습니다. 탭 막대 컨트롤러에 설치된 두 개의 UIViewController 있습니다. 그들에게보기 제어기 A와 B를 호출하십시오. 그것들은 어느 쪽도 참조가 없거나 다른 것에 대해 안다는 의미에서 관련이 없습니다.
A와 B 모두 원격 제어 이벤트 (재생/일시 중지/중지 버튼)에 응답해야합니다. 컨트롤러 A는 이러한 이벤트에 항상 응답하려고하지만 B는 사용자가 특정 기능을 선택했을 때만 응답하려고합니다. 내 앱이 시작되면 A가 즉시 첫 번째 응답자가되어 원격 제어 이벤트를 수신 할 수 있습니다. B가 이벤트를 받기를 원하면 첫 번째 응답자가되고 A 대신 이벤트를 받기 시작합니다.
리모컨을 사용하여 B를 완료하면 문제가 발생합니다. 이 시점에서 B는 resignFirstResponder를 호출합니다. 그 후에는 A 나 B도 원격 제어 이벤트를 얻지 못합니다.
B가 첫 번째 응답자 상태를 중단하면 이전에 첫 번째 응답자였던 것이 복원 될 것이라고 가정했습니다. 이게 어떻게 작동하는거야?
그렇지 않은 경우 A를 첫 번째 응답자로 복원하려면 어떻게해야합니까? A와 B는 별도의 탭이므로 B는 A에 대한 참조가 없거나 A가 첫 번째 응답자로 가정된다는 것을 기억하십시오. 그래서 A. 명시 적으로 becomeFirstResponder를 호출하고 싶지 않습니다. 대신에 이전 응답기를 가져 와서 복원하는 방법이 필요합니다 (제 생각에). 나는 이것이 왜 자동적으로 일어나지 않는지에 대해 당황 스럽다.
덕분에, 프랭크
감사합니다. 나는 그것에 대해 좀더 실험했고, 당신의 설명이 의미가 있습니다. 보기 B가 첫 번째 응답자가되는지 여부는 실제로 중요하지 않습니다. 해당 탭으로 전환하자마자 A보기가 첫 번째 응답자가되고 원격 제어 이벤트 수신을 중지합니다. 제 경우의 일반적인 수퍼 뷰는 아마도 탭 표시 줄 컨트롤러의보기 일 것입니다. 내가 원하는 것을하기 위해 UITabBarController를 하위 클래스 화해야합니까? – user332000
예 - 하위 클래스 UITabBarController가 작동하는 것으로 보입니다. 아무도 듣지 않을 때, 서브 클래스는 원격 제어 이벤트를 얻습니다. 이제해야 할 일은 이벤트를 적절한 장소로 파견하는 우아한 방법을 찾아내는 것입니다. – user332000
A. IIRC에 첫 번째 응답자를 건네기 위해 A의 "becomeFirstResponder :"메소드를 호출하십시오. – Kalle