// // XPSendGiftView.m // xplan-ios // // Created by 冯硕 on 2021/11/9. // #import "XPSendGiftView.h" ///Third #import #import #import ///Tool #import "XPMacro.h" #import "XPGiftPresenter.h" #import "TTPopup.h" #import "ThemeColor+SendGift.h" #import "StatisticsServiceHelper.h" #import "XPHtmlUrl.h" #import "AccountInfoStorage.h" ///Model #import "GiftInfoModel.h" #import "XPGiftCountModel.h" #import "GiftReceiveInfoModel.h" #import "AttachmentModel.h" #import "RoomInfoModel.h" #import "UserInfoModel.h" #import "XPMessageRemoteExtModel.h" ///View #import "XPGiftUsersView.h" #import "XPGiftInfoView.h" #import "XPGiftBarView.h" #import "XPRoomHalfWebView.h" #import "XPGraffitiGiftView.h" ///P #import "XPGiftProtocol.h" ///VC #import "XPMineRechargeViewController.h" #import "XPWebViewController.h" #import "XPFirstRechargeViewController.h" #import "XPNobleCenterViewController.h" @interface XPSendGiftView ()< XPGiftBarViewDelegate, XPGiftProtocol, XPGiftInfoViewDelegate, XPGraffitiGiftViewDelegate> ///顶部的区域 @property (nonatomic,strong) UIView * topView; ///内容区域 @property (nonatomic,strong) UIView *contentView; /// @property (nonatomic,strong) UIStackView *stackView; ///送礼物的人 @property (nonatomic,strong) XPGiftUsersView *userView; ///送的什么礼物 @property (nonatomic,strong) XPGiftInfoView *giftInfoView; ///送多少礼物 @property (nonatomic,strong) XPGiftBarView *giftBarView; ///底部的View @property (nonatomic,strong) UIView * bottomView; ///涂鸦礼物 @property (nonatomic,strong) XPGraffitiGiftView *graffitiView; ///房主的uid/私聊的话 就是用户的uid @property (nonatomic,copy) NSString *roomUid; ///使用的地方 @property (nonatomic,assign) SendGiftType usingplaceType; ///普通礼物的重试次数 @property (nonatomic,assign) int normalGiftRetryCount; ///背包礼物的重试次数 @property (nonatomic,assign) int packGiftRetryCount; @property (nonatomic,strong) NSArray *userArray; ///涂鸦礼物的坐标 @property (nonatomic,strong) NSArray *graffitiPoint; ///选择了滑块的类型 @property (nonatomic,assign) GiftSegmentType segmentType; @end @implementation XPSendGiftView - (XPGiftPresenter *)createPresenter { return [[XPGiftPresenter alloc] init]; } - (instancetype)initWithType:(SendGiftType)type uid:(NSString * __nullable)uid{ if (self = [super init]) { self.modalPresentationStyle = UIModalPresentationOverFullScreen; self.roomUid = uid; self.usingplaceType = type; } return self; } - (void)viewDidLoad { [self initSubViews]; [self initSubViewConstraints]; [self initHttpRequest]; } #pragma mark - Private Method - (void)initSubViews { [self.view addSubview:self.topView]; [self.view addSubview:self.contentView]; [self.contentView addSubview:self.stackView]; [self.stackView addArrangedSubview:self.graffitiView]; [self.stackView addArrangedSubview:self.userView]; [self.stackView addArrangedSubview:self.giftInfoView]; [self.stackView addArrangedSubview:self.giftBarView]; [self.stackView addArrangedSubview:self.bottomView]; } - (void)initSubViewConstraints { [self.topView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.mas_equalTo(self.view); make.bottom.mas_equalTo(self.contentView.mas_top);; }]; [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.stackView.mas_top); make.left.right.bottom.mas_equalTo(self.view); }]; [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.bottom.mas_equalTo(self.contentView); }]; [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(kSafeAreaBottomHeight); }]; } - (void)initHttpRequest { [self.presenter getUserInfo:[AccountInfoStorage instance].getUid]; [self.presenter getUserWallInfo]; [self.presenter getNormalGiftList:self.roomUid]; [self.presenter getPackGiftList]; } #pragma mark - Send Custom Message - (void)sendGraffitiGiftMessage { if (self.segmentType == GiftSegmentType_Graffiti && self.graffitiPoint.count > 0) { AttachmentModel * attachment = [[AttachmentModel alloc] init]; attachment.first = CustomMessageType_Graffiti_Gift; attachment.second = Custom_Message_Sub_Graffiti_Gift; NSMutableDictionary * dic = [NSMutableDictionary dictionary]; [dic setValue:@(self.giftInfoView.lastSelectGift.giftId) forKey:@"giftId"]; [dic setValue:self.graffitiPoint forKey:@"drawFixedArray"]; attachment.data = dic; [self sendCustomMessage:attachment]; } } - (void)sendCustomMessage:(GiftReceiveInfoModel *)receiveModel oringinDic:(NSDictionary *)originDic { NSDictionary * dict = originDic; if (receiveModel.roomSendGiftType == RoomSendGiftType_AllMic) { // 全麦 NSMutableDictionary *data = [NSMutableDictionary dictionary]; [data addEntriesFromDictionary:dict]; if (receiveModel.gift.giftType == GiftType_Lucky) { // 如果是福袋 需要分开发送消息 NSArray *luckyBagGifts = (NSArray *)[data objectForKey:@"luckyBagGifts"]; if (luckyBagGifts.count >0) { for (int i = 0; i < luckyBagGifts.count; i++) { NSMutableDictionary * data1 = [NSMutableDictionary dictionary]; [data1 addEntriesFromDictionary:dict]; AttachmentModel * attachment = [[AttachmentModel alloc] init]; attachment.first = CustomMessageType_AllMicroSend; attachment.second = Custom_Message_Sub_AllMicroLuckySend; NSDictionary * obj = [luckyBagGifts objectAtIndex:i]; [data1 setObject:i == 0 ? @(YES):@(NO) forKey:@"isShowAnimation"]; [data1 setObject:obj forKey:@"luckyGiftList"]; [data1 setObject:receiveModel.gift.giftName forKey:@"giftName"]; [data1 setObject:[obj valueForKeyPath:@"user.uid"] forKey:@"targetUid"]; [data1 setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; if ([dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"]) { [data1 setObject:[dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"] forKey:@"luckyGiftSvgaUrl"]; } [data1 removeObjectForKey:@"luckyBagGifts"]; [data1 removeObjectForKey:@"targetUsers"]; attachment.data = data1; [self sendCustomMessage:attachment]; } } }else { // 全麦赠送普通礼物 包含背包礼物 AttachmentModel * attachment = [[AttachmentModel alloc] init]; attachment.first = CustomMessageType_AllMicroSend; attachment.second = Custom_Message_Sub_AllMicroSend; [data setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; attachment.data = data; [self sendCustomMessage:attachment]; } } else if (receiveModel.roomSendGiftType == RoomSendGiftType_MutableOnMic) { // 多人非全麦 NSMutableDictionary *data = [NSMutableDictionary dictionary]; [data addEntriesFromDictionary:dict]; if (receiveModel.gift.giftType == GiftType_Lucky) { // 多人非全麦 福袋礼物 NSArray *luckyBagGifts = (NSArray *)[data objectForKey:@"luckyBagGifts"]; if (luckyBagGifts.count >0) { // 产品想一个消息 多次发送 只能遍历插入消息体 [luckyBagGifts enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { NSMutableDictionary * data1 = [NSMutableDictionary dictionary]; [data1 addEntriesFromDictionary:dict]; AttachmentModel * attachment = [[AttachmentModel alloc] init]; attachment.first = CustomMessageType_AllMicroSend; attachment.second = Custom_Message_Sub_AllBatchMicroLuckySend; [data1 setObject:idx == 0 ? @(YES):@(NO) forKey:@"isShowAnimation"]; [data1 setObject:obj forKey:@"luckyGiftList"]; [data1 setObject:receiveModel.gift.giftName forKey:@"giftName"]; [data1 setObject:[obj valueForKeyPath:@"user.uid"] forKey:@"targetUid"]; [data1 setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; if ([dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"]) { [data1 setObject:[dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"] forKey:@"luckyGiftSvgaUrl"]; } [data1 removeObjectForKey:@"luckyBagGifts"]; [data1 removeObjectForKey:@"targetUsers"]; attachment.data = data1; [self sendCustomMessage:attachment]; }]; } }else { // 多人非全麦 普通礼物 AttachmentModel *attachment = [[AttachmentModel alloc] init]; attachment.first = CustomMessageType_AllMicroSend; attachment.second = Custom_Message_Sub_AllBatchSend; attachment.data = data; [self sendCustomMessage:attachment]; } } else if (receiveModel.roomSendGiftType == RoomSendGiftType_ToOne) { // 单人 NSMutableDictionary *data = [NSMutableDictionary dictionary]; [data addEntriesFromDictionary:dict]; if (receiveModel.gift.giftType == GiftType_Lucky) { // 一对一 福袋礼物 NSArray *luckyBagGifts = (NSArray *)[data objectForKey:@"luckyBagGifts"]; [luckyBagGifts enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { NSMutableDictionary * data1 = [NSMutableDictionary dictionary]; [data1 addEntriesFromDictionary:dict]; AttachmentModel * attachment = [[AttachmentModel alloc] init]; attachment.first = CustomMessageType_Gift; attachment.second = Custom_Message_Sub_Gift_LuckySend; [data1 setObject:idx == 0 ? @(YES):@(NO) forKey:@"isShowAnimation"]; [data1 setObject:obj forKey:@"luckyGiftList"]; [data1 setObject:receiveModel.gift.giftName forKey:@"giftName"]; [data1 setObject:[obj valueForKeyPath:@"user.uid"] forKey:@"targetUid"]; [data1 setObject:[obj valueForKeyPath:@"user.nick"] forKey:@"targetNick"]; [data1 setObject:[dict valueForKeyPath:@"targetUsers.uid"] forKey:@"targetUids"]; if ([dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"]) { [data1 setObject:[dict valueForKeyPath:@"gift.luckyGiftSvgaUrl"] forKey:@"luckyGiftSvgaUrl"]; } [data1 removeObjectForKey:@"luckyBagGifts"]; [data1 removeObjectForKey:@"targetUsers"]; attachment.data = data1; [self sendCustomMessage:attachment]; }]; }else { // 一对一 普通礼物 AttachmentModel *attachment = [[AttachmentModel alloc] init]; attachment.first = CustomMessageType_Gift; attachment.second = Custom_Message_Sub_Gift_Send; NSDictionary *targetUsers = ((NSArray *)[data objectForKey:@"targetUsers"]).firstObject; [data setObject:[targetUsers valueForKeyPath:@"uid"] forKey:@"targetUid"]; [data setObject:[targetUsers valueForKeyPath:@"nick"] forKey:@"targetNick"]; [data setObject:[targetUsers valueForKeyPath:@"avatar"] forKey:@"targetAvatar"]; attachment.data = data; [self sendCustomMessage:attachment]; } } } - (void)sendCustomMessage:(AttachmentModel *)attachment { NSString *sessionID = self.usingplaceType == SendGiftType_User ? [NSString stringWithFormat:@"%ld", self.userArray.firstObject.uid] : [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].roomId]; NIMMessage *message = [[NIMMessage alloc]init]; NIMCustomObject *object = [[NIMCustomObject alloc] init]; object.attachment = attachment; message.messageObject = object; UserInfoModel *userInfo = [self.delegate getUserInfo]; XPMessageRemoteExtModel *extModel = [[XPMessageRemoteExtModel alloc] init]; extModel.androidBubbleUrl = userInfo.androidBubbleUrl; extModel.iosBubbleUrl = userInfo.iosBubbleUrl; extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; NSMutableDictionary *remoteExt = [NSMutableDictionary dictionaryWithObject:extModel.model2dictionary forKey:[NSString stringWithFormat:@"%ld", userInfo.uid]]; message.remoteExt = remoteExt; NIMSessionType sessionType = self.usingplaceType == SendGiftType_Room ? NIMSessionTypeChatroom : NIMSessionTypeP2P; //构造会话 NIMSession *session = [NIMSession session:sessionID type:sessionType]; [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; } #pragma mark - Deal Send Gift Data - (NSString *)dealSendGiftCount:(XPGiftCountModel *)model gift:(GiftInfoModel *)gift { NSString * count = @"1"; if (model.isTotal) { count = [NSString stringWithFormat:@"%ld", gift.count]; } else { count = model.giftNumber; } if (self.segmentType == GiftSegmentType_Graffiti) { count = [NSString stringWithFormat:@"%ld", self.graffitiPoint.count]; } return count; } - (NSString *)dealSendGiftUids:(NSArray *)uids { NSString *uidString = [[NSString alloc] init]; for (NSString *item in uids) { if (uidString.length > 0) { uidString = [uidString stringByAppendingString:@","]; } uidString = [uidString stringByAppendingString:item]; } return uidString; } - (RoomSendGiftType)dealRoomSendGiftType:(GiftInfoModel *)giftInfo giftCount:(XPGiftCountModel *)giftCount { NSArray * uids = self.userView.selectUserArray; RoomSendGiftType roomSendGiftType; if (self.userView.isSelectAll) { if (giftInfo.sourceType == GiftSourceType_Pack && giftCount.isTotal && giftInfo && uids.count > 1) { [self showErrorToast:@"只能全部赠送给一人"]; return -1; } roomSendGiftType = RoomSendGiftType_AllMic; } else if(self.userView.selectUserArray.count > 1) { if (giftInfo.sourceType == GiftSourceType_Pack && giftCount.isTotal) { [self showErrorToast:@"只能全部赠送给一人"]; return -1; } roomSendGiftType = RoomSendGiftType_MutableOnMic; } else if(self.userView.selectUserArray.count == 1) { roomSendGiftType = RoomSendGiftType_ToOne; } else { roomSendGiftType = -1; } return roomSendGiftType; } #pragma mark - Public Method - (void)configGiftUsers:(NSArray *)users { self.userArray = users; [self.userView configGiftUsers:users]; } #pragma mark - XPGiftBarViewDelegate - (void)xPGiftBarView:(XPGiftBarView *)view didClickSendGift:(XPGiftCountModel *)giftCount { ///总礼物 三要素 送礼物的人 送的什么礼物 送多少个礼物 NSArray * uids = self.userView.selectUserArray; GiftInfoModel * giftInfo = self.giftInfoView.lastSelectGift; if (self.usingplaceType == SendGiftType_Room) { if (uids.count > 0) { ///送礼物的人 NSString * uidString = [self dealSendGiftUids:uids]; ///送礼物的个数 NSString * giftNumber = [self dealSendGiftCount:giftCount gift:giftInfo]; ///送的什么礼物 NSString * giftId = [NSString stringWithFormat:@"%ld", giftInfo.giftId]; ///给麦上的人送礼物 GiftSendType sendType = GiftSendType_OnMic; ///礼物来源 GiftSourceType sourceType = giftInfo.sourceType; ///送一个人 还是全麦 还是多人非全麦 RoomSendGiftType roomSendType = [self dealRoomSendGiftType:giftInfo giftCount:giftCount]; if (roomSendType == -1) { return; } self.giftBarView.sendButtonIsEnable = NO; ///发送消息 [self.presenter sendGift:uidString giftNum:giftNumber sendType:sendType giftId:giftId giftSource:sourceType giftType:giftInfo.giftType roomSendType:roomSendType roomUid:self.roomUid msg:@""]; } else { [self showErrorToast:@"请选择至少一个人"]; return; } } else if(self.usingplaceType == SendGiftType_User) { ///送礼物的人 NSString * uidString = [self dealSendGiftUids:uids]; ///送礼物的个数 NSString * giftNumber = [self dealSendGiftCount:giftCount gift:giftInfo]; ///送的什么礼物 NSString * giftId = [NSString stringWithFormat:@"%ld", giftInfo.giftId]; ///给麦上的人送礼物 GiftSendType sendType = GiftSendType_Chat; ///礼物来源 GiftSourceType sourceType = giftInfo.sourceType; ///送一个人 还是全麦 还是多人非全麦 RoomSendGiftType roomSendType = RoomSendGiftType_ToOne; self.giftBarView.sendButtonIsEnable = NO; [self.presenter sendGift:uidString giftNum:giftNumber sendType:sendType giftId:giftId giftSource:sourceType giftType:giftInfo.giftType roomSendType:roomSendType roomUid:self.roomUid msg:@""]; } } ///充值 - (void)xPGiftBarViewDidClickRecharge:(XPGiftBarView *)view { [self dismissViewControllerAnimated:YES completion:nil]; XPMineRechargeViewController * rechargeVC = [[XPMineRechargeViewController alloc] init]; [self.delegate.getCurrentNav pushViewController:rechargeVC animated:YES]; } - (void)xPGiftBarViewDidClickFirstRecharge:(XPGiftBarView *)view { [self dismissViewControllerAnimated:YES completion:nil]; XPFirstRechargeViewController * firstRechargeVC = [[XPFirstRechargeViewController alloc] initWithNavigation:self.delegate.getCurrentNav]; [self.delegate.getCurrentNav presentViewController:firstRechargeVC animated:YES completion:nil]; } #pragma mark - XPGiftInfoViewDelegate - (void)xPGiftInfoView:(XPGiftInfoView *)view didClickPlayRule:(NSString *)ruleUrl { XPRoomHalfWebView * webView = [[XPRoomHalfWebView alloc] init]; webView.url = ruleUrl; [TTPopup popupView:webView style:TTPopupStyleActionSheet]; } - (void)xPGiftInfoView:(XPGiftInfoView *)view didClickSegment:(GiftSegmentType)type { self.segmentType = type; self.giftBarView.type = type; } - (void)xPGiftInfoViewDidClickNobleEntrance:(XPGiftInfoView *)view { [self dismissViewControllerAnimated:YES completion:nil]; [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventvipEntranceGiftClick]; XPNobleCenterViewController * nobleVC = [[XPNobleCenterViewController alloc] initWithRoomUid:self.delegate.getRoomInfo.uid]; [self.delegate.getCurrentNav pushViewController:nobleVC animated:YES]; } - (void)xpGiftInfoViewDidClickWeekStarRank:(XPGiftInfoView *)view { [self dismissViewControllerAnimated:YES completion:nil]; XPWebViewController * webVC = [[XPWebViewController alloc] init]; webVC.roomUid = self.roomUid; webVC.url = URLWithType(kNewWeekStarURL); [self.delegate.getCurrentNav pushViewController:webVC animated:YES]; } - (void)xPGiftInfoView:(XPGiftInfoView *)view didClickItem:(GiftInfoModel *)info type:(GiftSegmentType)type { if (type == GiftSegmentType_Graffiti) { self.giftInfoView.hidden = YES; self.graffitiView.hidden = NO; self.graffitiView.price = info.goldPrice; self.giftBarView.drawGiftCount = 0; [[SDWebImageManager sharedManager] loadImageWithURL:[NSURL URLWithString:info.giftUrl] options:SDWebImageProgressiveLoad progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { if (error == nil && image) { self.graffitiView.image = image; } else { self.giftInfoView.hidden = NO; } }]; } else { self.giftBarView.drawGiftCount = 10; } } #pragma mark - XPGraffitiGiftViewDelegate - (void)xPGraffitiGiftView:(XPGraffitiGiftView *)view didClickClose:(UIButton *)sender { [UIView animateWithDuration:0.2 animations:^{ self.graffitiView.hidden = YES; self.giftInfoView.hidden = NO; }]; } - (void)xPGraffitiGiftView:(XPGraffitiGiftView *)view didClickChange:(UIButton *)sender { [UIView animateWithDuration:0.2 animations:^{ self.graffitiView.hidden = YES; self.giftInfoView.hidden = NO; }]; } - (void)xPGraffitiGiftView:(XPGraffitiGiftView *)view didDrawCompletion:(NSArray *)pointArray { self.graffitiPoint = pointArray; self.giftBarView.drawGiftCount = self.graffitiPoint.count; } #pragma mark - XPGiftProtocol - (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { self.giftBarView.isShowFirstRecharge = userInfo.isFirstCharge; self.giftInfoView.curUserNobleLevel = userInfo.userVipInfoVO.vipLevel; } - (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo { self.giftBarView.walletInfoModel = balanceInfo; } ///背包礼物 - (void)getPacketGiftListSuccess:(NSArray *)giftList { self.giftInfoView.packOriginArray = giftList; } - (void)getPacketGiftListFail:(NSString *)message { self.packGiftRetryCount ++; if (self.packGiftRetryCount <= 10) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.presenter getPackGiftList]; }); } } ///普通礼物 /幸运礼物 - (void)getNormalGiftListSuccess:(NSArray *)giftList { self.giftInfoView.normalOriginArray = giftList; } - (void)getNormalGiftListFail:(NSString *)message { self.normalGiftRetryCount ++; if (self.normalGiftRetryCount <= 10) { dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.presenter getNormalGiftList:self.roomUid]; }); } } - (void)sendGiftSuccess:(GiftReceiveInfoModel *)receiveInfo originDic:(NSDictionary *)originDic uidCount:(NSInteger)uidCount{ self.giftBarView.sendButtonIsEnable = YES; if (receiveInfo.sourceType == GiftSourceType_Pack) { ///更新个数 [self.giftInfoView updatePackSource:receiveInfo numberUser:uidCount]; } else { [self.presenter getUserWallInfo]; } [self sendCustomMessage:receiveInfo oringinDic:originDic]; ///发送涂鸦礼物消息 [self sendGraffitiGiftMessage]; if (self.segmentType == GiftSegmentType_Graffiti) { NSString * title = [NSString stringWithFormat:@"发送涂鸦礼物:%@成功",self.giftInfoView.lastSelectGift.giftName]; [self showSuccessToast:title]; [self dismissViewControllerAnimated:YES completion:nil]; } } ///送礼物失败 - (void)sendGiftFailWithCode:(NSInteger)code msg:(NSString *)msg { self.giftBarView.sendButtonIsEnable = YES; if (code == 31005) {// 余额不足 [self showNotSufficientFundsWithToast:msg]; } else if (code == 8535) {//贵族等级未达到礼物等级 GiftInfoModel * giftInfo = self.giftInfoView.lastSelectGift; TTAlertConfig *config = [[TTAlertConfig alloc] init]; config.actionStyle = TTAlertActionConfirmStyle; config.message = [NSString stringWithFormat:@"尚未达到赠送%@所需要的贵族等级哦\n所需贵族等级:%@", giftInfo.giftName, giftInfo.giftVipInfo.vipName]; [TTPopup alertWithConfig:config confirmHandler:^{ } cancelHandler:^{ }]; } else { [self showErrorToast:msg]; } } /// 余额不足,是否弹首充弹窗 - (void)showNotSufficientFundsWithToast:(NSString *)msg { if (self.delegate.getUserInfo.isFirstCharge) { [self dismissViewControllerAnimated:YES completion:nil]; XPFirstRechargeViewController * firstRechargeVC = [[XPFirstRechargeViewController alloc] initWithNavigation:self.delegate.getCurrentNav]; [self.delegate.getCurrentNav presentViewController:firstRechargeVC animated:YES completion:nil]; } else { [self showErrorToast:msg]; } } #pragma mark - Event Response - (void)disMissViewRecognizer:(UITapGestureRecognizer *)tap { [self dismissViewControllerAnimated:YES completion:nil]; } #pragma mark - Getters And Setters - (void)setUsingplaceType:(SendGiftType)usingplaceType { _usingplaceType = usingplaceType; self.giftInfoView.usingplaceType = _usingplaceType; } - (void)setSelectGiftId:(NSString *)selectGiftId { _selectGiftId = selectGiftId; self.giftInfoView.defaultSelectGiftId = selectGiftId; } - (UIView *)topView { if (!_topView) { _topView = [[UIView alloc] init]; _topView.backgroundColor = [UIColor clearColor]; UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMissViewRecognizer:)]; [_topView addGestureRecognizer:tap]; } return _topView; } - (UIView *)contentView { if (!_contentView) { _contentView = [[UIView alloc] init]; _contentView.backgroundColor = [ThemeColor giftBackGroundColor]; } return _contentView; } - (XPGiftUsersView *)userView { if (!_userView) { _userView = [[XPGiftUsersView alloc] init]; } return _userView; } - (XPGiftInfoView *)giftInfoView { if (!_giftInfoView) { _giftInfoView = [[XPGiftInfoView alloc] init]; _giftInfoView.delegate = self; } return _giftInfoView; } - (XPGiftBarView *)giftBarView { if (!_giftBarView) { _giftBarView = [[XPGiftBarView alloc] init]; _giftBarView.delegate = self; } return _giftBarView; } - (UIStackView *)stackView { if (!_stackView) { _stackView = [[UIStackView alloc] init]; _stackView.axis = UILayoutConstraintAxisVertical; _stackView.distribution = UIStackViewDistributionFill; _stackView.alignment = UIStackViewAlignmentFill; _stackView.spacing = 0; _stackView.backgroundColor = [UIColor clearColor]; } return _stackView; } - (UIView *)bottomView { if (!_bottomView) { _bottomView = [[UIView alloc] init]; _bottomView.backgroundColor = [UIColor clearColor]; } return _bottomView; } - (XPGraffitiGiftView *)graffitiView { if (!_graffitiView) { _graffitiView = [[XPGraffitiGiftView alloc] init]; _graffitiView.hidden = YES; _graffitiView.delegate = self; } return _graffitiView; } @end