Guest User

Untitled

a guest
Sep 18th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. UIPopoverController hiding when it shouldn't
  2. // This code is within the controller's "viewDidLoad" method
  3. lockState = @"LockOpen"; //lock state is an NSString variable used to determine if the lock is open or closed.
  4.  
  5. UIButton *lock = [UIButton buttonWithType:UIButtonTypeCustom];
  6. lock.frame = CGRectMake( 0, 0, 30, 30 );
  7. [lock setImage:[UIImage imageNamed:@"LockOpen.png"] forState:UIControlStateNormal];
  8. [lock addTarget:self action:@selector(toggleLock) forControlEvents:UIControlEventTouchUpInside];
  9. self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:lock];
  10. // End viewDidLoad method
  11.  
  12. - (void)toggleLock
  13. {
  14. if ( [lockState isEqualToString:@"LockOpen"] )
  15. {
  16. lockState = @"LockClosed";
  17. [((UIButton *)self.navigationItem.rightBarButtonItem.customView) setImage:[UIImage imageNamed:@"LockClosed.png"] forState:UIControlStateNormal];
  18. }
  19. else
  20. {
  21. lockState = @"LockOpen";
  22. [((UIButton *)self.navigationItem.rightBarButtonItem.customView) setImage:[UIImage imageNamed:@"LockOpen.png"] forState:UIControlStateNormal];
  23. }
  24.  
  25. [pictureDisplay toggleCanHidePopover]; //pictureDisplay is a reference variable to the display view of the UISplitViewController
  26. }
  27.  
  28. - (void)toggleCanHidePopover
  29. {
  30. if ( canHidePopover )
  31. canHidePopover = NO; //variable used to determine whether or not the UIPopoverView can be dismissed
  32. else
  33. canHidePopover = YES;
  34. }
  35.  
  36. - (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
  37. {
  38. #ifdef PopoverLockEnabled
  39. if ( popover == nil )
  40. {
  41. popover = popoverController; //ivar
  42. popoverController.delegate = self;
  43. }
  44. #endif
  45. popoverController.passthroughViews = [NSArray arrayWithObjects:self.navigationController.navigationBar,
  46. #ifdef PopoverLockEnabled
  47. self.tabBarController.tabBar,
  48. #endif
  49. nil];
  50.  
  51. [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
  52. }
  53.  
  54. #ifdef PopoverLockEnabled
  55. - (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
  56. {
  57. NSLog(@"%@", canHidePopover? @"YES":@"NO" );
  58. return canHidePopover;
  59. }
  60. #endif
Add Comment
Please, Sign In to add comment