diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 4eb772f..ed70b3c 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -161,14 +161,6 @@ 04C6EAE32EAF942E0089C901 /* VC */, 04C6EAAC2EAF86530089C901 /* AppDelegate.h */, 04C6EAAD2EAF86530089C901 /* AppDelegate.m */, - 04FC95DB2EB202A3007BD342 /* KBGuideVC.h */, - 04FC95DC2EB202A3007BD342 /* KBGuideVC.m */, - 04FC96FE2EB30A00007BD342 /* KBGuideTopCell.h */, - 04FC96FF2EB30A00007BD342 /* KBGuideTopCell.m */, - 04FC97012EB30A00007BD342 /* KBGuideKFCell.h */, - 04FC97022EB30A00007BD342 /* KBGuideKFCell.m */, - 04FC97042EB30A00007BD342 /* KBGuideUserCell.h */, - 04FC97052EB30A00007BD342 /* KBGuideUserCell.m */, 04C6EAAE2EAF86530089C901 /* Assets.xcassets */, 04C6EAAF2EAF86530089C901 /* Info.plist */, 04C6EAB12EAF86530089C901 /* LaunchScreen.storyboard */, @@ -340,6 +332,7 @@ 04FC95BF2EB1E3B1007BD342 /* Class */ = { isa = PBXGroup; children = ( + 04FC95E12EB20AD1007BD342 /* Guard */, 04FC95C62EB1E4AB007BD342 /* Base */, 04FC95BA2EB1E3B1007BD342 /* Main */, 04FC95B62EB1E3B1007BD342 /* Home */, @@ -385,6 +378,45 @@ path = Base; sourceTree = ""; }; + 04FC95DE2EB20AD1007BD342 /* M */ = { + isa = PBXGroup; + children = ( + ); + path = M; + sourceTree = ""; + }; + 04FC95DF2EB20AD1007BD342 /* V */ = { + isa = PBXGroup; + children = ( + 04FC96FE2EB30A00007BD342 /* KBGuideTopCell.h */, + 04FC96FF2EB30A00007BD342 /* KBGuideTopCell.m */, + 04FC97012EB30A00007BD342 /* KBGuideKFCell.h */, + 04FC97022EB30A00007BD342 /* KBGuideKFCell.m */, + 04FC97042EB30A00007BD342 /* KBGuideUserCell.h */, + 04FC97052EB30A00007BD342 /* KBGuideUserCell.m */, + ); + path = V; + sourceTree = ""; + }; + 04FC95E02EB20AD1007BD342 /* VC */ = { + isa = PBXGroup; + children = ( + 04FC95DB2EB202A3007BD342 /* KBGuideVC.h */, + 04FC95DC2EB202A3007BD342 /* KBGuideVC.m */, + ); + path = VC; + sourceTree = ""; + }; + 04FC95E12EB20AD1007BD342 /* Guard */ = { + isa = PBXGroup; + children = ( + 04FC95DE2EB20AD1007BD342 /* M */, + 04FC95DF2EB20AD1007BD342 /* V */, + 04FC95E02EB20AD1007BD342 /* VC */, + ); + path = Guard; + sourceTree = ""; + }; 2C53A0856097DCFBE7B55649 /* Pods */ = { isa = PBXGroup; children = ( diff --git a/keyBoard/KBGuideKFCell.h b/keyBoard/Class/Guard/V/KBGuideKFCell.h similarity index 100% rename from keyBoard/KBGuideKFCell.h rename to keyBoard/Class/Guard/V/KBGuideKFCell.h diff --git a/keyBoard/KBGuideKFCell.m b/keyBoard/Class/Guard/V/KBGuideKFCell.m similarity index 100% rename from keyBoard/KBGuideKFCell.m rename to keyBoard/Class/Guard/V/KBGuideKFCell.m diff --git a/keyBoard/KBGuideTopCell.h b/keyBoard/Class/Guard/V/KBGuideTopCell.h similarity index 100% rename from keyBoard/KBGuideTopCell.h rename to keyBoard/Class/Guard/V/KBGuideTopCell.h diff --git a/keyBoard/KBGuideTopCell.m b/keyBoard/Class/Guard/V/KBGuideTopCell.m similarity index 100% rename from keyBoard/KBGuideTopCell.m rename to keyBoard/Class/Guard/V/KBGuideTopCell.m diff --git a/keyBoard/KBGuideUserCell.h b/keyBoard/Class/Guard/V/KBGuideUserCell.h similarity index 100% rename from keyBoard/KBGuideUserCell.h rename to keyBoard/Class/Guard/V/KBGuideUserCell.h diff --git a/keyBoard/KBGuideUserCell.m b/keyBoard/Class/Guard/V/KBGuideUserCell.m similarity index 100% rename from keyBoard/KBGuideUserCell.m rename to keyBoard/Class/Guard/V/KBGuideUserCell.m diff --git a/keyBoard/KBGuideVC.h b/keyBoard/Class/Guard/VC/KBGuideVC.h similarity index 100% rename from keyBoard/KBGuideVC.h rename to keyBoard/Class/Guard/VC/KBGuideVC.h diff --git a/keyBoard/KBGuideVC.m b/keyBoard/Class/Guard/VC/KBGuideVC.m similarity index 87% rename from keyBoard/KBGuideVC.m rename to keyBoard/Class/Guard/VC/KBGuideVC.m index db0a815..6d1a552 100644 --- a/keyBoard/KBGuideVC.m +++ b/keyBoard/Class/Guard/VC/KBGuideVC.m @@ -16,12 +16,13 @@ typedef NS_ENUM(NSInteger, KBGuideItemType) { KBGuideItemTypeKF // 客服回复 }; -@interface KBGuideVC () +@interface KBGuideVC () @property (nonatomic, strong) BaseTableView *tableView; // 列表(继承 BaseTableView) @property (nonatomic, strong) UIView *inputBar; // 底部输入容器 @property (nonatomic, strong) UITextField *textField; // 输入框 @property (nonatomic, strong) MASConstraint *inputBarBottom;// 输入栏底部约束 +@property (nonatomic, strong) UITapGestureRecognizer *bgTap;// 点击空白收起键盘 @property (nonatomic, strong) NSMutableArray *items; // 数据源 [{type, text}] @@ -41,7 +42,7 @@ typedef NS_ENUM(NSInteger, KBGuideItemType) { [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.left.right.equalTo(self.view); - make.bottom.equalTo(self.view); + make.bottom.equalTo(self.inputBar.mas_top); }]; [self.inputBar mas_makeConstraints:^(MASConstraintMaker *make) { @@ -68,12 +69,23 @@ typedef NS_ENUM(NSInteger, KBGuideItemType) { // 键盘监听 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(kb_keyboardWillChange:) name:UIKeyboardWillChangeFrameNotification object:nil]; + + // 点击空白收起键盘(不干扰 cell 的点击/滚动) + self.bgTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(kb_didTapBackground)]; + self.bgTap.cancelsTouchesInView = NO; + self.bgTap.delegate = self; + [self.tableView addGestureRecognizer:self.bgTap]; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; } +- (void)kb_didTapBackground { + // 结束编辑,隐藏键盘 + [self.view endEditing:YES]; +} + #pragma mark - Actions @@ -224,4 +236,21 @@ typedef NS_ENUM(NSInteger, KBGuideItemType) { return _items; } +#pragma mark - UIGestureRecognizerDelegate + +// 避免点到输入栏触发收起 +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { + if (gestureRecognizer == self.bgTap) { + if ([touch.view isDescendantOfView:self.inputBar]) { + return NO; + } + } + return YES; +} + +// 与其它手势同时识别,避免影响表格滚动/选择 +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + return YES; +} + @end