Skip to content

Commit 6661cdd

Browse files
author
Michael Frederick
committed
Added menu event notifications
1 parent d7b8207 commit 6661cdd

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

MFSideMenu/MFSideMenuContainerViewController.h

+9
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
#import <UIKit/UIKit.h>
1010

11+
static NSString *MFSideMenuStateNotificationEvent = @"MFSideMenuStateNotificationEvent";
12+
1113
typedef enum {
1214
MFSideMenuPanModeNone = 0, // pan disabled
1315
MFSideMenuPanModeCenterViewController = 1 << 0, // enable panning on the centerViewController
@@ -21,6 +23,13 @@ typedef enum {
2123
MFSideMenuStateRightMenuOpen // the right-hand menu is open
2224
} MFSideMenuState;
2325

26+
typedef enum {
27+
MFSideMenuStateEventMenuWillOpen, // the menu is going to open
28+
MFSideMenuStateEventMenuDidOpen, // the menu finished opening
29+
MFSideMenuStateEventMenuWillClose, // the menu is going to close
30+
MFSideMenuStateEventMenuDidClose // the menu finished closing
31+
} MFSideMenuStateEvent;
32+
2433

2534
@interface MFSideMenuContainerViewController : UIViewController<UIGestureRecognizerDelegate>
2635

MFSideMenu/MFSideMenuContainerViewController.m

+18
Original file line numberDiff line numberDiff line change
@@ -247,10 +247,13 @@ - (void)setMenuState:(MFSideMenuState)menuState completion:(void (^)(void))compl
247247
void (^innerCompletion)() = ^ {
248248
_menuState = menuState;
249249
if(completion) completion();
250+
MFSideMenuStateEvent eventType = (_menuState == MFSideMenuStateClosed) ? MFSideMenuStateEventMenuDidClose : MFSideMenuStateEventMenuDidOpen;
251+
[self sendStateEventNotification:eventType];
250252
};
251253

252254
switch (menuState) {
253255
case MFSideMenuStateClosed: {
256+
[self sendStateEventNotification:MFSideMenuStateEventMenuWillClose];
254257
[self closeSideMenuCompletion:^{
255258
[self.leftMenuViewController view].hidden = YES;
256259
[self.rightMenuViewController view].hidden = YES;
@@ -260,11 +263,13 @@ - (void)setMenuState:(MFSideMenuState)menuState completion:(void (^)(void))compl
260263
}
261264
case MFSideMenuStateLeftMenuOpen:
262265
if(!self.leftMenuViewController) return;
266+
[self sendStateEventNotification:MFSideMenuStateEventMenuWillOpen];
263267
[self leftMenuWillShow];
264268
[self openLeftSideMenuCompletion:innerCompletion];
265269
break;
266270
case MFSideMenuStateRightMenuOpen:
267271
if(!self.rightMenuViewController) return;
272+
[self sendStateEventNotification:MFSideMenuStateEventMenuWillOpen];
268273
[self rightMenuWillShow];
269274
[self openRightSideMenuCompletion:innerCompletion];
270275
break;
@@ -273,6 +278,7 @@ - (void)setMenuState:(MFSideMenuState)menuState completion:(void (^)(void))compl
273278
}
274279
}
275280

281+
// these callbacks are called when the menu will become visible, not neccessarily when they will OPEN
276282
- (void)leftMenuWillShow {
277283
[self.leftMenuViewController view].hidden = NO;
278284
[self.menuContainerView bringSubviewToFront:[self.leftMenuViewController view]];
@@ -284,6 +290,18 @@ - (void)rightMenuWillShow {
284290
}
285291

286292

293+
#pragma mark -
294+
#pragma mark - State Event Notification
295+
296+
- (void)sendStateEventNotification:(MFSideMenuStateEvent)event {
297+
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:event]
298+
forKey:@"eventType"];
299+
[[NSNotificationCenter defaultCenter] postNotificationName:MFSideMenuStateNotificationEvent
300+
object:self
301+
userInfo:userInfo];
302+
}
303+
304+
287305
#pragma mark -
288306
#pragma mark - Side Menu Positioning
289307

0 commit comments

Comments
 (0)