연구의 일 후, 나는 마침내 웹보기의 메뉴 컨트롤러의 화살표 방향을 변경하려면이 방법을 찾을 수 있습니다. 먼저보기 컨트롤러의 viewDidLoad
메소드에서이 작업을 수행하십시오.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuControllerWillShow:) name:UIMenuControllerWillShowMenuNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuControllerWillHide:) name:UIMenuControllerWillHideMenuNotification object:nil];
다음 두 가지 기능을 추가하면 화살표 방향이 항상 위를 향하게됩니다.이 경우 메뉴 바는 항상 텍스트 아래에 나타납니다.
-(void)menuControllerWillShow:(NSNotification *)notification{
//Remove Will Show Notification to prevent
// "menuControllerWillShow" function to be called multiple times
[[NSNotificationCenter defaultCenter]removeObserver:self name:UIMenuControllerWillShowMenuNotification object:nil];
//Hide the Original Menu View
UIMenuController* menuController = [UIMenuController sharedMenuController];
CGPoint origin = menuController.menuFrame.origin;
CGSize size = menuController.menuFrame.size;
CGRect menuFrame;
menuFrame.origin = origin;
menuFrame.size = size;
[menuController setMenuVisible:NO animated:NO];
//Modify its target rect and show it again to prevent glitchy appearance
menuController.arrowDirection = UIMenuControllerArrowUp;
[menuController setTargetRect:menuFrame inView:self.view];
[menuController setMenuVisible:YES animated:YES];
}
-(void)menuControllerWillHide:(NSNotification *)notification{
//re-register menuControllerWillShow
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuControllerWillShow:) name:UIMenuControllerWillShowMenuNotification object:nil];
}
좋은 답변입니다! 이것이 이상하게 작동하는 이상한 케이스가있었습니다.이 작업으로 화살표가 올바르게 움직이는 경우가 발생했고, iOS는 "올바른"방향으로 거의 즉시 다시 그릴 것입니다. –