Popover не отклоняется при вызове dismissPopoverAnimated или при однократном нажатии за пределами popover - PullRequest
1 голос
/ 27 августа 2011

Я надеюсь, что кто-то может помочь мне с этой странной ошибкой.У меня есть поповер с кнопками для выполнения различных действий.Существует элемент панели инструментов, который нужно нажать, чтобы вызвать всплывающее окно.Вот метод действия, который называется:

-(IBAction)showActions:(id)sender
{
  ActionsPopUpController* controller = [[ActionsPopUpController alloc] initWithDelegate:self state:DELETE_ENABLED | FACEBOOK_ENABLED | TWITTER_ENABLED | EMAIL_ENABLED];
  _actionsPopUp = [[UIPopoverController alloc] initWithContentViewController:controller];
  [controller release];
  [_actionsPopUp presentPopoverFromRect:_actionButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
  _actionsPopUp.delegate = self;
}

Как видите, у меня есть свойство / ivar (actionsPopUp), которое сохраняет ссылку на UIPopoverController.Это используется позже для вызова dismissPopoverAnimated, когда я хочу закрыть поповер.Вот пример его использования:

-(void)shareWishToEmail:(id)sender
{
  [_actionsPopUp dismissPopoverAnimated:YES];
  [[WishCloudService sharedInstance] showMailer:self withItems:[NSArray arrayWithObject:self.item] delegate:self modal:YES];
}

В этом методе я сначала отключаю поповер, а затем выполняю действие, связанное с кнопкой, которая была нажата в поповере.К сожалению, это не похоже на работу.Действие выполняется, но поповер не сбрасывается со счетов.Кроме того, кажется, что он не уволен, когда пользователь нажимает один раз за пределами поповер.Но если снова щелкнуть снаружи, оно будет отклонено.Другое наблюдение состоит в том, что первый щелчок, кажется, скрывает / отклоняет тень от всплывающего окна, но не самого всплывающего окна.Это второй щелчок, который отклоняет поповер.Тем не менее, никакое количество вызовов dismissPopoverAnimated, похоже, вообще не отклоняет popover.

Я поменял местами UIPopoverControllers, которые, похоже, работают в других частях приложения, но получают те же результаты, что заставляет меня поверитьэто что-то особенное для UIView / UIViewController, в котором я представляю всплывающее окно. Я создаю представление программно, а не через NIB.Это ускользает от меня в тот момент, когда я решил сделать это, но я не верю, что это должно быть актуально.Кто-то, пожалуйста, дайте мне знать иначе.Вот мой метод loadView:

-(void)loadView
{
  self.view = [self createView:_item];
  self.currentView = self.view;
  _wishItemViews = [[NSMutableDictionary dictionary] retain];
  [_wishItemViews setObject:_currentView forKey:[NSNumber numberWithInteger:_currentIndex]];
}

У меня есть свойство currentView, потому что мне нужно иметь возможность вставлять и выводить новые представления, и я использую анимацию CATransition для этого.Свойство currentView используется для обмена представлениями при выполнении переходов.Опять же, не уверен, что это актуально, но я включил его для полноты и на всякий случай, если это что-то меняет.Надеюсь, этого достаточно, чтобы кто-то помог мне указать верное направление.Или, по крайней мере, подскажите дополнительные вопросы, которые могут помочь мне обдумать это.Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 27 августа 2011

Другое наблюдение состоит в том, что первый щелчок, кажется, скрывает / отклоняет тень от всплывающего окна, но не самого поповера.

Кажется, вы наткнулись на редкий двойной поповер .; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...