gpt4 book ai didi

ios - MMDrawerController:检测菜单关闭 Action 或滑动手势

转载 作者:行者123 更新时间:2023-11-28 21:07:39 28 4
gpt4 key购买 nike

我想检测菜单何时关闭。我发现这个解决了question .在接受的答案的评论中,他们说这种方法:

-(void)setGestureCompletionBlock:(void(^)(MMDrawerController * drawerController, UIGestureRecognizer * gesture))gestureCompletionBlock;

必须在 App delegate 中才能在菜单关闭时收到通知。我把这个函数放在我的应用程序委托(delegate)中,在它的实现中我做了一个 NSLog(@"menu closed"); 但是我的控制台没有打印任何东西,当我关闭菜单时这个函数没有被触发.

谁能解释一下我如何检测到菜单已关闭? (基于给定的答案或者如果你有另一个答案)

编辑:

在 Storyboard 中,我有一个 UINavigationController 链接到一个 UIViewController,其类型为 MMDrawerController (myVCMMdrawerController),然后我还有 myCenterVCleftVCrightVC。在 myVCMMdrawerController viewDidLoad 这就是我所做的:

MyCenterVC * centerVC = [[self storyboard] instantiateViewControllerWithIdentifier:@"myCenterVC"];
centerVC.drawerController = self;

LeftVC * leftVC = [[self storyboard] instantiateViewControllerWithIdentifier:@"leftVC"];
leftVC.drawerController = self;

self.centerViewController = centerVC;
self.leftDrawerViewController = leftVC;


self.showsShadow = false;
//[self setMaximumLeftDrawerWidth:[UIScreen mainScreen].bounds.size.width animated: true completion: nil];

//enable gesture
self.openDrawerGestureModeMask = MMOpenDrawerGestureModeAll;
self.closeDrawerGestureModeMask = MMCloseDrawerGestureModeAll;
[self closeDrawerAnimated:NO completion:nil];

myCenterVC 中,我执行以下操作以在 IBActions 中显示菜单:

[self.drawerController toggleDrawerSide:MMDrawerSideLeft animated:true completion:nil];

最佳答案

这是适合我的代码:

swift 3.0+

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let leftDrawer = UIViewController()
leftDrawer.view.backgroundColor = UIColor.red
let centerDrawer = UIViewController()
centerDrawer.view.backgroundColor = UIColor.green

let mainContainer = MMDrawerController(center: centerDrawer, leftDrawerViewController: leftDrawer)

mainContainer?.openDrawerGestureModeMask = .panningCenterView
mainContainer?.closeDrawerGestureModeMask = .panningCenterView

mainContainer?.setGestureCompletionBlock({ (drawer, gesture) in
if drawer?.openSide != .left {
print("Drawer Closed")
}else {
print("Drawer Opened")
}
})

window?.rootViewController = mainContainer
window?.makeKeyAndVisible()

return true

您可能必须确保设置

mainContainer?.openDrawerGestureModeMask = .panningCenterView
mainContainer?.closeDrawerGestureModeMask = .panningCenterView

并检查 drawer 的 openSide 是否离开,否则它是关闭的。

objective-C

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.

UIViewController *leftDrawer = [[UIViewController alloc] init];
[[leftDrawer view] setBackgroundColor:[UIColor redColor]];
UIViewController *centerDrawer = [[UIViewController alloc] init];
[[centerDrawer view] setBackgroundColor:[UIColor greenColor]];

MMDrawerController *mainDrawer = [[MMDrawerController alloc] initWithCenterViewController:centerDrawer leftDrawerViewController:leftDrawer];
mainDrawer.openDrawerGestureModeMask = MMOpenDrawerGestureModePanningCenterView;
mainDrawer.closeDrawerGestureModeMask = MMOpenDrawerGestureModePanningCenterView;

[mainDrawer setGestureCompletionBlock:^(MMDrawerController *drawerController, UIGestureRecognizer *gesture) {
if (drawerController.openSide != MMDrawerSideLeft) {
NSLog(@"Drawer Closed");
}else{
NSLog(@"Drawer Opened");
}
}];

self.window.rootViewController = mainDrawer;
[self.window makeKeyAndVisible];

return YES;
}

关于ios - MMDrawerController:检测菜单关闭 Action 或滑动手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44889794/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com