@@ -247,10 +247,13 @@ - (void)setMenuState:(MFSideMenuState)menuState completion:(void (^)(void))compl
247
247
void (^innerCompletion)() = ^ {
248
248
_menuState = menuState;
249
249
if (completion) completion ();
250
+ MFSideMenuStateEvent eventType = (_menuState == MFSideMenuStateClosed) ? MFSideMenuStateEventMenuDidClose : MFSideMenuStateEventMenuDidOpen;
251
+ [self sendStateEventNotification: eventType];
250
252
};
251
253
252
254
switch (menuState) {
253
255
case MFSideMenuStateClosed: {
256
+ [self sendStateEventNotification: MFSideMenuStateEventMenuWillClose];
254
257
[self closeSideMenuCompletion: ^{
255
258
[self .leftMenuViewController view ].hidden = YES ;
256
259
[self .rightMenuViewController view ].hidden = YES ;
@@ -260,11 +263,13 @@ - (void)setMenuState:(MFSideMenuState)menuState completion:(void (^)(void))compl
260
263
}
261
264
case MFSideMenuStateLeftMenuOpen:
262
265
if (!self.leftMenuViewController ) return ;
266
+ [self sendStateEventNotification: MFSideMenuStateEventMenuWillOpen];
263
267
[self leftMenuWillShow ];
264
268
[self openLeftSideMenuCompletion: innerCompletion];
265
269
break ;
266
270
case MFSideMenuStateRightMenuOpen:
267
271
if (!self.rightMenuViewController ) return ;
272
+ [self sendStateEventNotification: MFSideMenuStateEventMenuWillOpen];
268
273
[self rightMenuWillShow ];
269
274
[self openRightSideMenuCompletion: innerCompletion];
270
275
break ;
@@ -273,6 +278,7 @@ - (void)setMenuState:(MFSideMenuState)menuState completion:(void (^)(void))compl
273
278
}
274
279
}
275
280
281
+ // these callbacks are called when the menu will become visible, not neccessarily when they will OPEN
276
282
- (void )leftMenuWillShow {
277
283
[self .leftMenuViewController view ].hidden = NO ;
278
284
[self .menuContainerView bringSubviewToFront: [self .leftMenuViewController view ]];
@@ -284,6 +290,18 @@ - (void)rightMenuWillShow {
284
290
}
285
291
286
292
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
+
287
305
#pragma mark -
288
306
#pragma mark - Side Menu Positioning
289
307
0 commit comments