1

MyModalViewController은 버튼 누르기에서 모달로 표시됩니다. MyRootViewController입니다. MyModalViewController에는 UISearchBar이 포함되어 있으며 텍스트 입력란에 길게 누를 때마다 [잘라 내기] | [붙여 넣기 | 전체 선택] 텍스트 옵션을 표시하고 싶습니다.UISearchBar가 잘못된 UIMenuItem을 보여줍니다. 다른 곳에서 UIMenuController를 사용하기 때문에

MyRootViewController 그러므로, 긴 버튼을 누르세요 (UIMenuController을 통해) 사용자 정의 UIMenuItems를 제공 - (BOOL)canBecomeFirstResponder을 무시하고 - (BOOL)canPerformAction:(SEL)action withSender:(id)sender-(void)duplicate:(id)sender-(void)delete:(id)sender을 구현합니다. 복사 | | 붙여 넣기

내가 가진 문제는 MyRootViewController는 사용자 오래 내부 프레스 및 따라서 대신 일반 [잘라 내기 때문에, 관련없는 메뉴 항목을 표시 할 때 MyModalViewController 내부의 UISearchBar에 대해 표시 할 UIMenuItems 요청되고 있다는 것입니다 | 텍스트 필드의 [모두 선택] 옵션을 선택합니다.

MyRootViewController은 아직 보이지 않지만 응답자 체인에 계속 있기 때문에 이러한 상황이 발생합니다.

내가 지금까지 생각해 낸 최선의 해결책은 UISearchBar을 서브 클래 싱하고 - (BOOL)canPerformAction:(SEL)action withSender:(id)sender을 오버라이드하고, 잘라 내기, 복사, 붙여 넣기 또는 모두 선택을 위해 YES을 반환하는 것입니다. 이렇게하면 iOS가 리스폰 더 체인을 더 내려다 보지 않게됩니다. 그러나 이것은 마치 해킹과 같은 느낌입니다. UISearchBar을 다른 시스템과 일관되게 동작 시키려면이 방법을 사용하지 않아도됩니다. 단지 다른 곳에서 UIMenuController을 사용하고 있기 때문입니다.

누가이 문제에 대해 기술적으로 올바른 해결책을 알고 있습니까?

답변

0

길게 누르기에만 의 menuItems 속성을 설정하도록 선택할 수 있습니다. UIMenuControllerWillHideNotification이 던져 질 때마다이 값을 0으로 설정하십시오.