当在外面的任何地方轻拍时如何隐藏侧菜单



我想在用户点击外面的任何地方时都隐藏侧菜单。菜单正在出现,但我找不到任何方法。关于HideOntap的任何建议也将不胜感激。我还使用了表视图来显示侧面菜单内容,每当用户点击任何选项上的用户都将其重定向到该页面。如何在不进行任何选择的情况下隐藏菜单。以下是代码

#import "MainMenuViewController.h"
#import "UIImageView+AFNetworking.h"
#import "ProfileViewController.h"
#import "ChatMenuHomeVC.h"

@interface MainMenuViewController ()
{
    NSString *username;
    NSString *profilestr;
}
@property (nonatomic, weak) IBOutlet UITableViewCell *cellMain;
@end
@implementation MainMenuViewController
@synthesize lblUserName,profilePic;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {
        // Custom initialization
    }
    return self;
}
- (void)viewDidLoad
{
    //SideMenuToProfileView
    arrOfOptions = [[NSMutableArray alloc]init];
    [self addTitle:@"Home" imageName:@"icon-sidemenu-home.png" segueName:@"slidingToHome"];
    [self addTitle:@"My Chat" imageName:@"icon-sidemenu-chat.png" segueName:@"ChatHomeVc"];
     [self addTitle:@"Invite Friends" imageName:@"icon-sidemenu-invite.png" segueName:@""];
    [self addTitle:@"Settings" imageName:@"icon-sidemenu-setting.png" segueName:@"slidingToSettings"];

    [super viewDidLoad];
    UITapGestureRecognizer *tapAction1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(profileVC:)];
    tapAction1.numberOfTapsRequired = 1;
    profilePic.userInteractionEnabled = YES;
    [profilePic addGestureRecognizer:tapAction1];
    username  = [[NSUserDefaults standardUserDefaults]
                   stringForKey:@"UserName"];
    profilestr = [[NSUserDefaults standardUserDefaults] stringForKey: @"UserProfilePic"];
    self.lblUserName.text = username;
    [profilePic setImageWithURL:[NSURL URLWithString:profilestr] placeholderImage:[UIImage imageNamed:@"user"]];
    self.profilePic.layer.cornerRadius = self.profilePic.frame.size.width / 2;
    self.profilePic.clipsToBounds = YES;
    // Do any additional setup after loading the view.
}
-(void)addTitle:(NSString *)title imageName:(NSString *)imageName segueName:(NSString *)segue
{
    NSMutableDictionary *dic = [[NSMutableDictionary alloc]init];
    [dic setObject:title forKey:@"title"];
    [dic setObject:imageName forKey:@"image"];
    [dic setObject:segue forKey:@"segue"];
    [arrOfOptions addObject:dic];
}
- (void)profileVC:(UITapGestureRecognizer *)tapGesture
{
   [self performSegueWithIdentifier:@"SideMenuToProfileView" sender:self];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"SideMenuToProfileView"])
    {
        ProfileViewController *destViewController = segue.destinationViewController;
        destViewController.senderStr = @"fromUserSideMenu";
    }
}

创建一个宽度和高度等于设备的背景视图。点击视图时,将TAP手势识别器添加到视图中,并隐藏侧面菜单。或者,您也可以使用按钮在按钮操作方法中获得相同的功能。

做如下

 var backgroundView : UIView = UIView()
 func createBackgroundView()
{
    backgroundView = UIView(frame: CGRect(x: 0, y: 0, width: ScreenSize.SCREEN_WIDTH, height: ScreenSize.SCREEN_HEIGHT))
    backgroundView.tag = 10
    backgroundView.isHidden = true
}

出现侧菜单时,您可以脱离背景视图

最新更新