2010-12-28 7 views
1

컨텍스트 : 내 사용자 지정 메뉴 항목을 UIMenuController에 추가했습니다. 모든 것이 잘 작동하며, 사용자 정의 항목을 두드리면 canPerformAction이 예상대로 호출됩니다.UIMenuController 부모 송신자를 잡는 방법

여기 내 문제가 있습니다 : 메뉴가 표시되는보기 내에서 몇 textview 있습니다. 사용자 지정 메뉴를 누를 때 현재 텍스트 뷰 에서 현재 선택된 텍스트를 가져올 수 있기를 원합니다.

발신자가 메뉴를 호스팅/표시하지만 menucontroller 자체이기 때문에 내가 할 수 없습니다.

메뉴가 표시된 발신인/UI_control (상위?)을 어떻게 찾을 수 있습니까?

답변

1

작동하도록되어 방법은 다음과 같습니다

  1. 당신은 일반적인 방식으로 사용자 지정 메뉴를 추가합니다.
  2. canPerformAction에서 사용/표시 할 동작을 필터링합니다.
  3. 동작이 발생하면 현재 응답자를 확인하고 논리를 적용합니다.

canPerformAction withSender는 사용자 지정 메뉴를 시각적으로 호스팅하는 현재 컨트롤을 반환하지 않습니다.

모든보기를 반복하는 첫 번째 응답자를 확인하고 isFirstResponder 속성을 확인할 수 있습니다. 또는 만약 당신이 그 두 사람에 대한 빠른 점검을 할 수 있다면 당신은 단지 한 쌍을 가지고 있습니다.

// called by canPerformAction 
    if ([myTextBox isFirstResponder]) { 
    NSLog(@"Found it!", nil); 
} 
+0

내가 알아 냈을 때 곧 내 자신의 질문에 대답했다. 그것은 다른 사람들이 잘못된 지점을 보거나 잘못된 질문을하지 않도록 도움을 줄 수 있습니다. – amok