From a5ff2ce51b95205a51e0563d636bd45f1990090c Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Wed, 3 Dec 2025 18:02:20 +0800 Subject: [PATCH] 1 --- keyBoard/Class/Base/VC/BaseViewController.h | 3 +++ keyBoard/Class/Base/VC/BaseViewController.m | 14 ++++++++++++++ keyBoard/Class/Login/VC/KBEmailLoginVC.m | 1 + keyBoard/Class/Login/VC/KBEmailRegistVC.m | 1 + keyBoard/Class/Login/VC/KBForgetPwdNewPwdVC.m | 1 + keyBoard/Class/Login/VC/KBForgetPwdVC.m | 1 + keyBoard/Class/Login/VC/KBForgetVerPwdVC.m | 1 + keyBoard/Class/Login/VC/KBRegistVerEmailVC.m | 1 + 8 files changed, 23 insertions(+) diff --git a/keyBoard/Class/Base/VC/BaseViewController.h b/keyBoard/Class/Base/VC/BaseViewController.h index e5784b1..0c01ad2 100644 --- a/keyBoard/Class/Base/VC/BaseViewController.h +++ b/keyBoard/Class/Base/VC/BaseViewController.h @@ -26,6 +26,9 @@ NS_ASSUME_NONNULL_BEGIN /// 自定义导航栏右侧按钮(懒加载,默认 hidden = YES)。 @property (nonatomic, strong, readonly) UIButton *kb_rightButton; +/// 在当前页面添加“点击空白处收起键盘”的手势。可在需要的 VC 的 viewDidLoad 中调用。 +- (void)kb_addTapToDismissKeyboard; + @end NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Base/VC/BaseViewController.m b/keyBoard/Class/Base/VC/BaseViewController.m index b595f10..0098ca2 100644 --- a/keyBoard/Class/Base/VC/BaseViewController.m +++ b/keyBoard/Class/Base/VC/BaseViewController.m @@ -191,6 +191,20 @@ } } +#pragma mark - Keyboard + +/// 默认实现:在需要的页面调用该方法,为 view 添加点击手势收起键盘。 +- (void)kb_addTapToDismissKeyboard { + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self + action:@selector(kb_onTapBackgroundToDismissKeyboard)]; + tap.cancelsTouchesInView = NO; // 不影响按钮/列表等正常点击 + [self.view addGestureRecognizer:tap]; +} + +- (void)kb_onTapBackgroundToDismissKeyboard { + [self.view endEditing:YES]; +} + /* #pragma mark - Navigation diff --git a/keyBoard/Class/Login/VC/KBEmailLoginVC.m b/keyBoard/Class/Login/VC/KBEmailLoginVC.m index d3af8a2..e04b385 100644 --- a/keyBoard/Class/Login/VC/KBEmailLoginVC.m +++ b/keyBoard/Class/Login/VC/KBEmailLoginVC.m @@ -51,6 +51,7 @@ // 与登录/注册页一致:隐藏通用导航栏,使用自定义背景 + 返回按钮 self.kb_enableCustomNavBar = NO; self.view.backgroundColor = [UIColor whiteColor]; + [self kb_addTapToDismissKeyboard]; [self setupUI]; } diff --git a/keyBoard/Class/Login/VC/KBEmailRegistVC.m b/keyBoard/Class/Login/VC/KBEmailRegistVC.m index 4289c44..3c24931 100644 --- a/keyBoard/Class/Login/VC/KBEmailRegistVC.m +++ b/keyBoard/Class/Login/VC/KBEmailRegistVC.m @@ -62,6 +62,7 @@ // 与 KBLoginVC 一致,使用自定义背景与返回按钮,不展示通用导航栏 self.kb_enableCustomNavBar = NO; self.view.backgroundColor = [UIColor whiteColor]; + [self kb_addTapToDismissKeyboard]; [self setupUI]; } diff --git a/keyBoard/Class/Login/VC/KBForgetPwdNewPwdVC.m b/keyBoard/Class/Login/VC/KBForgetPwdNewPwdVC.m index 73500ed..3d321e2 100644 --- a/keyBoard/Class/Login/VC/KBForgetPwdNewPwdVC.m +++ b/keyBoard/Class/Login/VC/KBForgetPwdNewPwdVC.m @@ -28,6 +28,7 @@ [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; self.kb_titleLabel.text = KBLocalized(@"Reset Password"); + [self kb_addTapToDismissKeyboard]; [self setupUI]; } diff --git a/keyBoard/Class/Login/VC/KBForgetPwdVC.m b/keyBoard/Class/Login/VC/KBForgetPwdVC.m index d76458d..b0e5434 100644 --- a/keyBoard/Class/Login/VC/KBForgetPwdVC.m +++ b/keyBoard/Class/Login/VC/KBForgetPwdVC.m @@ -22,6 +22,7 @@ [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; self.kb_titleLabel.text = KBLocalized(@"Reset Password"); + [self kb_addTapToDismissKeyboard]; [self setupUI]; } diff --git a/keyBoard/Class/Login/VC/KBForgetVerPwdVC.m b/keyBoard/Class/Login/VC/KBForgetVerPwdVC.m index be9003c..31ad04e 100644 --- a/keyBoard/Class/Login/VC/KBForgetVerPwdVC.m +++ b/keyBoard/Class/Login/VC/KBForgetVerPwdVC.m @@ -24,6 +24,7 @@ [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; self.kb_titleLabel.text = KBLocalized(@"Reset Password"); + [self kb_addTapToDismissKeyboard]; [self setupUI]; } diff --git a/keyBoard/Class/Login/VC/KBRegistVerEmailVC.m b/keyBoard/Class/Login/VC/KBRegistVerEmailVC.m index f315d1d..6444b28 100644 --- a/keyBoard/Class/Login/VC/KBRegistVerEmailVC.m +++ b/keyBoard/Class/Login/VC/KBRegistVerEmailVC.m @@ -24,6 +24,7 @@ [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; self.kb_titleLabel.text = KBLocalized(@"Verify Email"); + [self kb_addTapToDismissKeyboard]; [self setupUI]; }