From eacac8425cb588a0f26d90f9f0c626e0a49e3e0e Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 14 Nov 2025 14:07:04 +0800 Subject: [PATCH] 1 --- keyBoard.xcodeproj/project.pbxproj | 28 +++ .../key_permiss_icon.imageset/Contents.json | 22 ++ .../key_permiss_icon@2x.png | Bin 0 -> 25184 bytes .../key_permiss_icon@3x.png | Bin 0 -> 49605 bytes keyBoard/Class/Home/VC/HomeMainVC.m | 24 +- .../Class/Pay/M/IAPVerifyTransactionObj.m | 4 +- keyBoard/Class/Pay/VM/PayVM.m | 12 +- keyBoard/Class/Vender/WMDragView/WMDragView.h | 77 ++++++ keyBoard/Class/Vender/WMDragView/WMDragView.m | 235 ++++++++++++++++++ 9 files changed, 392 insertions(+), 10 deletions(-) create mode 100644 keyBoard/Assets.xcassets/Home/key_permiss_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/key_permiss_icon.imageset/key_permiss_icon@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/key_permiss_icon.imageset/key_permiss_icon@3x.png create mode 100644 keyBoard/Class/Vender/WMDragView/WMDragView.h create mode 100644 keyBoard/Class/Vender/WMDragView/WMDragView.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index a8d8b35..392c881 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -15,6 +15,10 @@ 04122F702EC5F40800EF7AB3 /* FGIAPService.m in Sources */ = {isa = PBXBuildFile; fileRef = 04122F672EC5F40800EF7AB3 /* FGIAPService.m */; }; 04122F7E2EC5FC5500EF7AB3 /* KBJfPayCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04122F7C2EC5FC5500EF7AB3 /* KBJfPayCell.m */; }; 04122F822EC5FC6F00EF7AB3 /* KBJfPay.m in Sources */ = {isa = PBXBuildFile; fileRef = 04122F802EC5FC6F00EF7AB3 /* KBJfPay.m */; }; + 04122F872EC6198C00EF7AB3 /* WMDragView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04122F852EC6198C00EF7AB3 /* WMDragView.m */; }; + 04122F882EC6F07F00EF7AB3 /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; + 04122F8B2EC6F7C800EF7AB3 /* IAPVerifyTransactionObj.m in Sources */ = {isa = PBXBuildFile; fileRef = 04122F8A2EC6F7C800EF7AB3 /* IAPVerifyTransactionObj.m */; }; + 04122F8E2EC6F83F00EF7AB3 /* PayVM.m in Sources */ = {isa = PBXBuildFile; fileRef = 04122F8D2EC6F83F00EF7AB3 /* PayVM.m */; }; 043FBCD22EAF97630036AFE1 /* KBPermissionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 04C6EAE12EAF940F0089C901 /* KBPermissionViewController.m */; }; 0459D1B42EBA284C00F2D189 /* KBSkinCenterVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */; }; 0459D1B72EBA287900F2D189 /* KBSkinManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B62EBA287900F2D189 /* KBSkinManager.m */; }; @@ -203,6 +207,12 @@ 04122F7C2EC5FC5500EF7AB3 /* KBJfPayCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBJfPayCell.m; sourceTree = ""; }; 04122F7F2EC5FC6F00EF7AB3 /* KBJfPay.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBJfPay.h; sourceTree = ""; }; 04122F802EC5FC6F00EF7AB3 /* KBJfPay.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBJfPay.m; sourceTree = ""; }; + 04122F842EC6198C00EF7AB3 /* WMDragView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WMDragView.h; sourceTree = ""; }; + 04122F852EC6198C00EF7AB3 /* WMDragView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = WMDragView.m; sourceTree = ""; }; + 04122F892EC6F7C800EF7AB3 /* IAPVerifyTransactionObj.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IAPVerifyTransactionObj.h; sourceTree = ""; }; + 04122F8A2EC6F7C800EF7AB3 /* IAPVerifyTransactionObj.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IAPVerifyTransactionObj.m; sourceTree = ""; }; + 04122F8C2EC6F83F00EF7AB3 /* PayVM.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PayVM.h; sourceTree = ""; }; + 04122F8D2EC6F83F00EF7AB3 /* PayVM.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PayVM.m; sourceTree = ""; }; 0459D1B22EBA284C00F2D189 /* KBSkinCenterVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinCenterVC.h; sourceTree = ""; }; 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinCenterVC.m; sourceTree = ""; }; 0459D1B52EBA287900F2D189 /* KBSkinManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinManager.h; sourceTree = ""; }; @@ -502,6 +512,8 @@ 04122F642EC5F40600EF7AB3 /* M */ = { isa = PBXGroup; children = ( + 04122F892EC6F7C800EF7AB3 /* IAPVerifyTransactionObj.h */, + 04122F8A2EC6F7C800EF7AB3 /* IAPVerifyTransactionObj.m */, ); path = M; sourceTree = ""; @@ -509,6 +521,8 @@ 04122F652EC5F40600EF7AB3 /* VM */ = { isa = PBXGroup; children = ( + 04122F8C2EC6F83F00EF7AB3 /* PayVM.h */, + 04122F8D2EC6F83F00EF7AB3 /* PayVM.m */, ); path = VM; sourceTree = ""; @@ -548,6 +562,15 @@ path = VC; sourceTree = ""; }; + 04122F862EC6198C00EF7AB3 /* WMDragView */ = { + isa = PBXGroup; + children = ( + 04122F842EC6198C00EF7AB3 /* WMDragView.h */, + 04122F852EC6198C00EF7AB3 /* WMDragView.m */, + ); + path = WMDragView; + sourceTree = ""; + }; 0477BD942EBAFF4E0055D639 /* Utils */ = { isa = PBXGroup; children = ( @@ -763,6 +786,7 @@ 048908D32EBF618E00FABA60 /* Vender */ = { isa = PBXGroup; children = ( + 04122F862EC6198C00EF7AB3 /* WMDragView */, 04122F6C2EC5F40800EF7AB3 /* FGIAPService */, 049FB2162EC20A6600FAB05D /* BMLongPressDragCellCollectionView */, 048908D92EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout */, @@ -1559,7 +1583,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 04122F882EC6F07F00EF7AB3 /* KBFullAccessManager.m in Sources */, 04122F622EC5F41D00EF7AB3 /* KBUser.m in Sources */, + 04122F8B2EC6F7C800EF7AB3 /* IAPVerifyTransactionObj.m in Sources */, 049FB31D2EC21BCD00FAB05D /* KBMyKeyboardCell.m in Sources */, 048909F62EC0AAAA00FABA60 /* KBCategoryTitleCell.m in Sources */, 048909F72EC0AAAA00FABA60 /* KBCategoryTitleView.m in Sources */, @@ -1605,6 +1631,7 @@ 049FB2292EC31BB000FAB05D /* KBChangeNicknamePopView.m in Sources */, 048908EC2EBF849300FABA60 /* KBSkinTagsContainerCell.m in Sources */, 049FB2172EC20A6600FAB05D /* BMLongPressDragCellCollectionView.m in Sources */, + 04122F8E2EC6F83F00EF7AB3 /* PayVM.m in Sources */, 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */, 048908E62EBF841B00FABA60 /* KBSkinDetailTagCell.m in Sources */, 04FC97002EB30A00007BD342 /* KBGuideTopCell.m in Sources */, @@ -1631,6 +1658,7 @@ 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */, 049FB2432EC4BBB700FAB05D /* KBLoginPopView.m in Sources */, 048908CC2EBE373500FABA60 /* KBSearchBarView.m in Sources */, + 04122F872EC6198C00EF7AB3 /* WMDragView.m in Sources */, 048908CD2EBE373500FABA60 /* KBSearchSectionHeader.m in Sources */, 049FB2202EC30D2700FAB05D /* HomeRankDetailPopView.m in Sources */, 048908CE2EBE373500FABA60 /* KBSkinCardCell.m in Sources */, diff --git a/keyBoard/Assets.xcassets/Home/key_permiss_icon.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/key_permiss_icon.imageset/Contents.json new file mode 100644 index 0000000..085ed8a --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/key_permiss_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "key_permiss_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "key_permiss_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/key_permiss_icon.imageset/key_permiss_icon@2x.png b/keyBoard/Assets.xcassets/Home/key_permiss_icon.imageset/key_permiss_icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..95809c4a5fc304016a084106da9e8027787d8506 GIT binary patch literal 25184 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/key_permiss_icon.imageset/key_permiss_icon@3x.png b/keyBoard/Assets.xcassets/Home/key_permiss_icon.imageset/key_permiss_icon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..24c54a3b87e39048336b0886c94b17dccc7d027d GIT binary patch literal 49605 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 KsrsX7=>Gxxn_&9@ literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Home/VC/HomeMainVC.m b/keyBoard/Class/Home/VC/HomeMainVC.m index e8fdf54..4e6c27e 100644 --- a/keyBoard/Class/Home/VC/HomeMainVC.m +++ b/keyBoard/Class/Home/VC/HomeMainVC.m @@ -9,11 +9,14 @@ #import "HomeHeadView.h" #import "KBPanModalView.h" #import "KBGuideVC.h" // 首次安装指引页 +#import "WMDragView.h" @interface HomeMainVC () @property (nonatomic, strong) HomeHeadView *headView; @property (nonatomic, strong) KBPanModalView *simplePanModalView; +/// 权限按钮 +@property (nonatomic, strong) WMDragView *keyPermissButton; @end @implementation HomeMainVC @@ -27,8 +30,6 @@ [bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.view); }]; -// CGFloat topV = (500); - [self.view addSubview:self.headView]; [self setupMas]; // 创建sheetVC @@ -42,6 +43,14 @@ } self.simplePanModalView.topInset = 100; [self.simplePanModalView presentInView:self.view]; + [self.view addSubview:self.keyPermissButton]; + self.keyPermissButton.frame = CGRectMake(KB_SCREEN_WIDTH - 92, KB_SCREEN_HEIGHT - 78 - 120, 92, 78); + + KBWeakSelf + self.keyPermissButton.clickDragViewBlock = ^(WMDragView *dragView){ + KBGuideVC *vc = [KBGuideVC new]; + [weakSelf.navigationController pushViewController:vc animated:true]; + }; } // 在界面可见后做“首次安装”检查,避免在 viewDidLoad 期间 push 引起的转场警告 @@ -87,4 +96,15 @@ } +- (WMDragView *)keyPermissButton{ + if (!_keyPermissButton) { + _keyPermissButton = [[WMDragView alloc] init]; + _keyPermissButton.backgroundColor = [UIColor clearColor]; + _keyPermissButton.isKeepBounds = true; + [_keyPermissButton.button setImage:[UIImage imageNamed:@"key_permiss_icon"] forState:UIControlStateNormal]; + + } + return _keyPermissButton; +} + @end diff --git a/keyBoard/Class/Pay/M/IAPVerifyTransactionObj.m b/keyBoard/Class/Pay/M/IAPVerifyTransactionObj.m index 291252a..b277af3 100644 --- a/keyBoard/Class/Pay/M/IAPVerifyTransactionObj.m +++ b/keyBoard/Class/Pay/M/IAPVerifyTransactionObj.m @@ -42,8 +42,8 @@ __weak typeof(self) weakSelf = self; [self.payVM applePayReqWithParams:params needShow:NO completion:^(NSInteger sta, NSString * _Nullable msg) { [KBHUD dismiss]; - [KBHUD showInfo:(sta == KB_PAY_ERROR_CODE ? @"支付失败" : @"支付成功")]; - if (sta == KB_PAY_SUCC_CODE) { + [KBHUD showInfo:(sta == ERROR_CODE ? @"支付失败" : @"支付成功")]; + if (sta == SUCCESS_CODE) { [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; if (handler) handler(@"成功", nil); } else { diff --git a/keyBoard/Class/Pay/VM/PayVM.m b/keyBoard/Class/Pay/VM/PayVM.m index 7e386d2..42ddd16 100644 --- a/keyBoard/Class/Pay/VM/PayVM.m +++ b/keyBoard/Class/Pay/VM/PayVM.m @@ -18,12 +18,12 @@ if (needShow) { [KBHUD dismiss]; } if (error) { - if (completion) completion(KB_PAY_ERROR_CODE, error.localizedDescription ?: @"网络错误"); + if (completion) completion(ERROR_CODE, error.localizedDescription ?: @"网络错误"); return; } NSInteger sta = [self.class extractStatusFromResponseObject:jsonOrData response:response]; - NSString *msg = [self.class extractMessageFromResponseObject:jsonOrData] ?: (sta == KB_PAY_SUCC_CODE ? @"OK" : @"失败"); + NSString *msg = [self.class extractMessageFromResponseObject:jsonOrData] ?: (sta == SUCCESS_CODE ? @"OK" : @"失败"); if (completion) completion(sta, msg); }]; } @@ -36,21 +36,21 @@ NSDictionary *d = (NSDictionary *)obj; id code = d[@"code"] ?: d[@"status"] ?: d[@"retcode"]; if ([code isKindOfClass:NSNumber.class]) { - return [((NSNumber *)code) integerValue] == 0 ? KB_PAY_SUCC_CODE : KB_PAY_ERROR_CODE; + return [((NSNumber *)code) integerValue] == 0 ? SUCCESS_CODE : ERROR_CODE; } if ([code isKindOfClass:NSString.class]) { // 常见:"0" 视为成功 - return [((NSString *)code) integerValue] == 0 ? KB_PAY_SUCC_CODE : KB_PAY_ERROR_CODE; + return [((NSString *)code) integerValue] == 0 ? SUCCESS_CODE : ERROR_CODE; } id success = d[@"success"] ?: d[@"ok"]; if ([success respondsToSelector:@selector(boolValue)]) { - return [success boolValue] ? KB_PAY_SUCC_CODE : KB_PAY_ERROR_CODE; + return [success boolValue] ? SUCCESS_CODE : ERROR_CODE; } } // 无明显字段,按 HTTP 2xx 视为成功 NSInteger http = 0; if ([resp isKindOfClass:NSHTTPURLResponse.class]) { http = ((NSHTTPURLResponse *)resp).statusCode; } - return (http >= 200 && http < 300) ? KB_PAY_SUCC_CODE : KB_PAY_ERROR_CODE; + return (http >= 200 && http < 300) ? SUCCESS_CODE : ERROR_CODE; } + (NSString *)extractMessageFromResponseObject:(id)obj { diff --git a/keyBoard/Class/Vender/WMDragView/WMDragView.h b/keyBoard/Class/Vender/WMDragView/WMDragView.h new file mode 100644 index 0000000..761dc35 --- /dev/null +++ b/keyBoard/Class/Vender/WMDragView/WMDragView.h @@ -0,0 +1,77 @@ +// +// WMDragView.h +// WMDragView +// +// Created by zhengwenming on 2016/12/16. +// +// + +#import + + +// 拖曳view的方向 +typedef NS_ENUM(NSInteger, WMDragDirection) { + WMDragDirectionAny, /**< 任意方向 */ + WMDragDirectionHorizontal, /**< 水平方向 */ + WMDragDirectionVertical, /**< 垂直方向 */ +}; + +@interface WMDragView : UIView +/** + 是不是能拖曳,默认为YES + YES,能拖曳 + NO,不能拖曳 + */ +@property (nonatomic,assign) BOOL dragEnable; + +/** + 活动范围,默认为父视图的frame范围内(因为拖出父视图后无法点击,也没意义) + 如果设置了,则会在给定的范围内活动 + 如果没设置,则会在父视图范围内活动 + 注意:设置的frame不要大于父视图范围 + 注意:设置的frame为0,0,0,0表示活动的范围为默认的父视图frame,如果想要不能活动,请设置dragEnable这个属性为NO + */ +@property (nonatomic,assign) CGRect freeRect; + +/** + 拖曳的方向,默认为any,任意方向 + */ +@property (nonatomic,assign) WMDragDirection dragDirection; + +/** + contentView内部懒加载的一个UIImageView + 开发者也可以自定义控件添加到本view中 + 注意:最好不要同时使用内部的imageView和button + */ +@property (nonatomic,strong) UIImageView *imageView; +/** + contentView内部懒加载的一个UIButton + 开发者也可以自定义控件添加到本view中 + 注意:最好不要同时使用内部的imageView和button + */ +@property (nonatomic,strong) UIButton *button; +/** + 是不是总保持在父视图边界,默认为NO,没有黏贴边界效果 + isKeepBounds = YES,它将自动黏贴边界,而且是最近的边界 + isKeepBounds = NO, 它将不会黏贴在边界,它是free(自由)状态,跟随手指到任意位置,但是也不可以拖出给定的范围frame + */ +@property (nonatomic,assign) BOOL isKeepBounds; +/** + 点击的回调block + */ +@property (nonatomic,copy) void(^clickDragViewBlock)(WMDragView *dragView); +/** + 开始拖动的回调block + */ +@property (nonatomic,copy) void(^beginDragBlock)(WMDragView *dragView); +/** + 拖动中的回调block + */ +@property (nonatomic,copy) void(^duringDragBlock)(WMDragView *dragView); +/** + 结束拖动的回调block + */ +@property (nonatomic,copy) void(^endDragBlock)(WMDragView *dragView); +@end + + diff --git a/keyBoard/Class/Vender/WMDragView/WMDragView.m b/keyBoard/Class/Vender/WMDragView/WMDragView.m new file mode 100644 index 0000000..848a2bd --- /dev/null +++ b/keyBoard/Class/Vender/WMDragView/WMDragView.m @@ -0,0 +1,235 @@ +// +// WMDragView.m +// WMDragView +// +// Created by zhengwenming on 2016/12/16. +// +// + +#import "WMDragView.h" + +@interface WMDragView () +/** + 内容view,命名为contentViewForDrag,因为很多其他开源的第三方的库,里面同样有contentView这个属性 + ,这里特意命名为contentViewForDrag以防止冲突 + */ +@property (nonatomic,strong) UIView *contentViewForDrag; +@property (nonatomic,assign) CGPoint startPoint; +@property (nonatomic,strong) UIPanGestureRecognizer *panGestureRecognizer; +@property (nonatomic,assign) CGFloat previousScale; +@end + +@implementation WMDragView +-(UIImageView *)imageView{ + if (_imageView==nil) { + _imageView = [[UIImageView alloc]init]; + _imageView.userInteractionEnabled = YES; + _imageView.clipsToBounds = YES; + [self.contentViewForDrag addSubview:_imageView]; + } + return _imageView; +} +-(UIButton *)button{ + if (_button==nil) { + _button = [UIButton buttonWithType:UIButtonTypeCustom]; + _button.clipsToBounds = YES; + _button.userInteractionEnabled = NO; + [self.contentViewForDrag addSubview:_button]; + } + return _button; +} +-(UIView *)contentViewForDrag{ + if (_contentViewForDrag==nil) { + _contentViewForDrag = [[UIView alloc]init]; + _contentViewForDrag.clipsToBounds = YES; + } + return _contentViewForDrag; +} +- (instancetype)initWithFrame:(CGRect)frame{ + self = [super initWithFrame:frame]; + if (self) { + [self addSubview:self.contentViewForDrag]; + [self setUp]; + } + return self; +} +- (instancetype)initWithCoder:(NSCoder *)coder{ + self = [super initWithCoder:coder]; + if (self) { + [self setUp]; + } + return self; +} + +-(void)layoutSubviews{ + [super layoutSubviews]; + if (self.freeRect.origin.x!=0||self.freeRect.origin.y!=0||self.freeRect.size.height!=0||self.freeRect.size.width!=0) { + //设置了freeRect--活动范围 + }else{ + //没有设置freeRect--活动范围,则设置默认的活动范围为父视图的frame + self.freeRect = (CGRect){CGPointZero,self.superview.bounds.size}; + } + _imageView.frame = (CGRect){CGPointZero,self.bounds.size}; + _button.frame = (CGRect){CGPointZero,self.bounds.size}; + self.contentViewForDrag.frame = (CGRect){CGPointZero,self.bounds.size}; +} +-(void)setUp{ + self.dragEnable = YES;//默认可以拖曳 + self.clipsToBounds = YES; + self.isKeepBounds = NO; + self.backgroundColor = [UIColor lightGrayColor]; + UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(clickDragView)]; + [self addGestureRecognizer:singleTap]; + + //添加移动手势可以拖动 + self.panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(dragAction:)]; + self.panGestureRecognizer.minimumNumberOfTouches = 1; + self.panGestureRecognizer.maximumNumberOfTouches = 1; + self.panGestureRecognizer.delegate = self; + [self addGestureRecognizer:self.panGestureRecognizer]; +} +- (void)setIsKeepBounds:(BOOL)isKeepBounds{ + _isKeepBounds = isKeepBounds; + if(isKeepBounds){ + [self keepBounds]; + } +} +-(void)setFreeRect:(CGRect)freeRect{ + _freeRect = freeRect; + [self keepBounds]; + +} +//-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ +// return self.dragEnable; +//} +/** + 拖动事件 + @param pan 拖动手势 + */ +-(void)dragAction:(UIPanGestureRecognizer *)pan{ + if(self.dragEnable==NO)return; + switch (pan.state) { + case UIGestureRecognizerStateBegan:{//开始拖动 + if (self.beginDragBlock) { + self.beginDragBlock(self); + } + //注意完成移动后,将translation重置为0十分重要。否则translation每次都会叠加 + [pan setTranslation:CGPointZero inView:self]; + //保存触摸起始点位置 + self.startPoint = [pan translationInView:self]; + break; + } + case UIGestureRecognizerStateChanged:{//拖动中 + //计算位移 = 当前位置 - 起始位置 + if (self.duringDragBlock) { + self.duringDragBlock(self); + } + CGPoint point = [pan translationInView:self]; + float dx; + float dy; + switch (self.dragDirection) { + case WMDragDirectionAny: + dx = point.x - self.startPoint.x; + dy = point.y - self.startPoint.y; + break; + case WMDragDirectionHorizontal: + dx = point.x - self.startPoint.x; + dy = 0; + break; + case WMDragDirectionVertical: + dx = 0; + dy = point.y - self.startPoint.y; + break; + default: + dx = point.x - self.startPoint.x; + dy = point.y - self.startPoint.y; + break; + } + + //计算移动后的view中心点 + CGPoint newCenter = CGPointMake(self.center.x + dx, self.center.y + dy); + //移动view + self.center = newCenter; + // 注意完成上述移动后,将translation重置为0十分重要。否则translation每次都会叠加 + [pan setTranslation:CGPointZero inView:self]; + break; + } + case UIGestureRecognizerStateEnded:{//拖动结束 + [self keepBounds]; + if (self.endDragBlock) { + self.endDragBlock(self); + } + break; + } + default: + break; + } +} +//单击事件 +-(void)clickDragView{ + if (self.clickDragViewBlock) { + self.clickDragViewBlock(self); + } +} +//黏贴边界效果 +- (void)keepBounds{ + //中心点判断 + float centerX = self.freeRect.origin.x+(self.freeRect.size.width - self.frame.size.width)/2; + CGRect rect = self.frame; + if (self.isKeepBounds==NO) {//没有设置黏贴边界的效果 + if (self.frame.origin.x < self.freeRect.origin.x) { + CGContextRef context = UIGraphicsGetCurrentContext(); + [UIView beginAnimations:@"leftMove" context:context]; + [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; + [UIView setAnimationDuration:0.5]; + rect.origin.x = self.freeRect.origin.x; + self.frame = rect; + [UIView commitAnimations]; + } else if(self.freeRect.origin.x+self.freeRect.size.width < self.frame.origin.x+self.frame.size.width){ + CGContextRef context = UIGraphicsGetCurrentContext(); + [UIView beginAnimations:@"rightMove" context:context]; + [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; + [UIView setAnimationDuration:0.5]; + rect.origin.x = self.freeRect.origin.x+self.freeRect.size.width-self.frame.size.width; + self.frame = rect; + [UIView commitAnimations]; + } + }else if(self.isKeepBounds==YES){//设置了自动粘边的效果 + if (self.frame.origin.x< centerX) { + CGContextRef context = UIGraphicsGetCurrentContext(); + [UIView beginAnimations:@"leftMove" context:context]; + [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; + [UIView setAnimationDuration:0.5]; + rect.origin.x = self.freeRect.origin.x; + self.frame = rect; + [UIView commitAnimations]; + } else { + CGContextRef context = UIGraphicsGetCurrentContext(); + [UIView beginAnimations:@"rightMove" context:context]; + [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; + [UIView setAnimationDuration:0.5]; + rect.origin.x =self.freeRect.origin.x+self.freeRect.size.width - self.frame.size.width; + self.frame = rect; + [UIView commitAnimations]; + } + } + + if (self.frame.origin.y < self.freeRect.origin.y) { + CGContextRef context = UIGraphicsGetCurrentContext(); + [UIView beginAnimations:@"topMove" context:context]; + [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; + [UIView setAnimationDuration:0.5]; + rect.origin.y = self.freeRect.origin.y; + self.frame = rect; + [UIView commitAnimations]; + } else if(self.freeRect.origin.y+self.freeRect.size.height< self.frame.origin.y+self.frame.size.height){ + CGContextRef context = UIGraphicsGetCurrentContext(); + [UIView beginAnimations:@"bottomMove" context:context]; + [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; + [UIView setAnimationDuration:0.5]; + rect.origin.y = self.freeRect.origin.y+self.freeRect.size.height-self.frame.size.height; + self.frame = rect; + [UIView commitAnimations]; + } +} +@end