UIMenuController не отображается на iOS 4, но работает на iOS 5 - PullRequest
0 голосов
/ 29 октября 2011

В пользовательском представлении я установил 'canBecomeFirstResponder' для возврата YES и также определил '- (BOOL) canPerformAction: (SEL) действие withSender: (id) sender'

Я использую следующий код дляотобразить всплывающее меню:

[self becomeFirstResponder];
UIMenuController *theMenu = [UIMenuController sharedMenuController];


if (theMenu.menuItems==nil)
{
    UIMenuItem* item = [[UIMenuItem alloc] initWithTitle:@"Open" action:@selector(openAction:)];
    NSArray* array = [NSArray arrayWithObject:item];
    theMenu.menuItems = array;
    [item release];
}

CGRect rect;
rect = CGRectMake(self.frame.size.width*0.5, self.frame.size.height*0.5, 0, 0);
[theMenu setTargetRect:rect inView:self];
theMenu.arrowDirection = UIMenuControllerArrowDown;
[theMenu setMenuVisible:YES animated:YES];

Проблема в том, что это хорошо работает на iOS 5, но ничего не показывает на iOS 4.3.

Однако на ОБЫХ iOS 'UIMenuControllerWillShowMenuNotification' иУведомления «UIMenuControllerDidShowMenuNotification» получены, как и ожидалось.

Может кто-нибудь помочь или указать мне правильное направление, пожалуйста.Заранее спасибо.

1 Ответ

1 голос
/ 10 января 2012
 if(![self becomeFirstResponder]; )
 {
    NSLog(@"Couldn't become first responder ");
    return;
 }

Сначала проверьте checkFirstResponder.

...