diff --git a/YuMi.xcodeproj/xcshareddata/xcschemes/YuMi.xcscheme b/YuMi.xcodeproj/xcshareddata/xcschemes/YuMi.xcscheme index 9e3921f5..d258e3d3 100644 --- a/YuMi.xcodeproj/xcshareddata/xcschemes/YuMi.xcscheme +++ b/YuMi.xcodeproj/xcshareddata/xcschemes/YuMi.xcscheme @@ -31,7 +31,7 @@ ///滚动的容器 @@ -46,6 +42,8 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey"; @property (nonatomic,strong) UIButton *inputButton; ///麦 @property (nonatomic,strong) UIButton *micButton; +///声音 +@property (nonatomic,strong) UIButton *voiceButton; ///表情 @property (nonatomic,strong) UIButton *faceButton; ///私聊 @@ -69,113 +67,133 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey"; @implementation XPRoomMenuContainerView - (instancetype)initWithDelegate:(id)delegate { - self = [super init]; - if (self) { - self.delegate = delegate; - [self initSubViews]; - [self initSubViewConstraints]; + self = [super init]; + if (self) { + self.delegate = delegate; + [self initSubViews]; + [self initSubViewConstraints]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showGiftView:) name:@"kShowGiftView" object:nil]; - } - return self; + } + return self; } - (void)menuResignFirstResponder { - [self.inputTextView.editTextFiled resignFirstResponder]; + [self.inputTextView.editTextFiled resignFirstResponder]; } #pragma mark - Response - (void)menuButtonAction:(UIButton *)sender { - XPRoomMenuItemType type = sender.tag; - switch (type) { - case XPRoomMenuItemType_Input: - { - if (self.delegate.getRoomInfo.isCloseScreen) { - [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView0")]; - return; - } - if (self.delegate.getRoomInfo.type == RoomType_Anchor) { - self.inputTextView = [XPRoomSendTextView showTextView:self.superview.superview delegate:self.delegate atUid:nil atNick:nil]; - } else { - self.inputTextView = [XPRoomSendTextView showTextView:self.superview delegate:self.delegate atUid:nil atNick:nil]; - } - [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_chatbox_click]; - } - break; + XPRoomMenuItemType type = sender.tag; + switch (type) { + case XPRoomMenuItemType_Input: + { + if (self.delegate.getRoomInfo.isCloseScreen) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView0")]; + return; + } + if (self.delegate.getRoomInfo.type == RoomType_Anchor) { + self.inputTextView = [XPRoomSendTextView showTextView:self.superview.superview delegate:self.delegate atUid:nil atNick:nil]; + } else { + self.inputTextView = [XPRoomSendTextView showTextView:self.superview delegate:self.delegate atUid:nil atNick:nil]; + } + + } + break; case XPRoomMenuItemType_Mic: { [RtcManager instance].localMuted = !self.micButton.isSelected; + if([RtcManager instance].localMuted == NO){ + for (MicroQueueModel *sequence in [self.delegate getMicroQueue].allValues) { + if ([AccountInfoStorage instance].getUid.integerValue == sequence.userInfo.uid) { + [[RtcManager instance] broadcast:YES]; + } + } + } + + self.micButton.selected = [RtcManager instance].isLocalMuted; } break; - case XPRoomMenuItemType_Face: { - XPRoomFaceViewController * faceVC = [[XPRoomFaceViewController alloc] init]; - faceVC.modalPresentationStyle = UIModalPresentationOverFullScreen; - faceVC.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; - [self.delegate.getCurrentNav presentViewController:faceVC animated:YES completion:nil]; + + case XPRoomMenuItemType_Voice: { + [RtcManager instance].remoteMuted = !self.voiceButton.isSelected; + self.voiceButton.selected = [RtcManager instance].isRemoteMuted; } break; - case XPRoomMenuItemType_Gift: { - [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_gift_click]; - NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid]; - XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_Room uid:roomUid]; - giftView.delegate = self.delegate; + + case XPRoomMenuItemType_Face: { + XPRoomFaceViewController * faceVC = [[XPRoomFaceViewController alloc] init]; + faceVC.modalPresentationStyle = UIModalPresentationOverFullScreen; + faceVC.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + [self.delegate.getCurrentNav presentViewController:faceVC animated:YES completion:nil]; + } + break; + case XPRoomMenuItemType_Gift: { + NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid]; + XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_Room uid:roomUid]; + giftView.delegate = self.delegate; giftView.freeModel = self.freeModel; - NSArray * giftUses = [self configGiftUsers:[self.delegate getMicroQueue]]; - [giftView configGiftUsers:giftUses]; - [self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil]; - } - break; - case XPRoomMenuItemType_Message: - { - [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_privateletter_click]; - UIViewController * controller = (UIViewController *)self.delegate; - XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; - [controller.view addSubview:halfMessageView]; - [UIView animateWithDuration:.35 animations:^{ - CGRect rect = halfMessageView.frame; - rect.origin.y = 0; - halfMessageView.frame = rect; - }]; - - } - break; - case XPRoomMenuItemType_More: { - XPRoomMoreMenuViewController * moreMenuVC = [[XPRoomMoreMenuViewController alloc] initWithDelegate:self.delegate]; - [self.delegate.getCurrentNav presentViewController:moreMenuVC animated:YES completion:nil]; - } - break; - case XPRoomMenuItemType_ArrangeMic:{ - if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode && self.delegate.isRoomPKPlaying) { - [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView1")]; - return; - } - - self.arrangeMicButton.selected = NO; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; - request.userIds = @[[AccountInfoStorage instance].getUid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NIMChatroomMember * member; - if (error == nil) { - member = members.firstObject; - } - RoomInfoModel * roomInfo = self.delegate.getRoomInfo; - XPArrangeMicInfoModel * info = [[XPArrangeMicInfoModel alloc] init]; - info.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; - info.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - info.nick = roomInfo.nick; - info.roomAvatar = roomInfo.avatar; - info.roomTitle = roomInfo.title; - info.micQueue = [self.delegate getMicroQueue]; - info.isManager = (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager); - info.type = roomInfo.roomModeType == RoomModeType_Open_Blind ? ArrangeMicType_Dating : roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? ArrangeMicType_Room_PK : ArrangeMicType_Normal; - XPArrangeMicViewController * arrangeMicVC = [[XPArrangeMicViewController alloc] initWithInfo:info]; - [self.delegate.getCurrentNav presentViewController:arrangeMicVC animated:YES completion:nil]; - }]; - } - break; - default: - break; - } + NSArray * giftUses = [self configGiftUsers:[self.delegate getMicroQueue]]; + [giftView configGiftUsers:giftUses]; + [self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil]; + } + break; + case XPRoomMenuItemType_Message: + { + UIViewController * controller = (UIViewController *)self.delegate; + XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; + [controller.view addSubview:halfMessageView]; + [UIView animateWithDuration:.35 animations:^{ + CGRect rect = halfMessageView.frame; + rect.origin.y = 0; + halfMessageView.frame = rect; + }]; + + } + break; + case XPRoomMenuItemType_More: { + XPRoomMoreMenuViewController * moreMenuVC = [[XPRoomMoreMenuViewController alloc] initWithDelegate:self.delegate]; + [self.delegate.getCurrentNav presentViewController:moreMenuVC animated:YES completion:nil]; + } + break; + case XPRoomMenuItemType_ArrangeMic:{ + if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode && self.delegate.isRoomPKPlaying) { + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView1")]; + return; + } + + self.arrangeMicButton.selected = NO; + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NIMChatroomMember * member; + if (error == nil) { + member = members.firstObject; + } + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + XPArrangeMicInfoModel * info = [[XPArrangeMicInfoModel alloc] init]; + info.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; + info.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + info.nick = roomInfo.nick; + info.roomAvatar = roomInfo.avatar; + info.roomTitle = roomInfo.title; + info.micQueue = [self.delegate getMicroQueue]; + info.isManager = (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager); + info.type = roomInfo.roomModeType == RoomModeType_Open_Blind ? ArrangeMicType_Dating : roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? ArrangeMicType_Room_PK : ArrangeMicType_Normal; + XPArrangeMicViewController * arrangeMicVC = [[XPArrangeMicViewController alloc] initWithInfo:info]; + [self.delegate.getCurrentNav presentViewController:arrangeMicVC animated:YES completion:nil]; + }]; + } + break; + case XPRoomMenuItemType_Noble: { + [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventvipEntranceRoomClick]; + XPNobleCenterViewController * nobleVC = [[XPNobleCenterViewController alloc] initWithRoomUid:self.delegate.getRoomInfo.uid]; + [self.delegate.getCurrentNav pushViewController:nobleVC animated:YES]; + } + break; + default: + break; + } } #pragma mark - notification @@ -193,70 +211,76 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey"; #pragma mark - Private Method - (void)initSubViews { - [self addSubview:self.scrollView]; - [self addSubview:self.giftButton]; - - [self.scrollView addSubview:self.stackView]; - - [self.stackView addArrangedSubview:self.inputButton]; - [self.stackView addArrangedSubview:self.micButton]; - [self.stackView addArrangedSubview:self.faceButton]; - [self.stackView addArrangedSubview:self.arrangeMicButton]; - [self.stackView addArrangedSubview:self.messageButton]; - [self.stackView addArrangedSubview:self.moreButton]; + [self addSubview:self.scrollView]; + [self addSubview:self.giftButton]; + + [self.scrollView addSubview:self.stackView]; + + [self.stackView addArrangedSubview:self.inputButton]; + [self.stackView addArrangedSubview:self.micButton]; + [self.stackView addArrangedSubview:self.voiceButton]; + [self.stackView addArrangedSubview:self.faceButton]; + [self.stackView addArrangedSubview:self.arrangeMicButton]; + [self.stackView addArrangedSubview:self.messageButton]; + [self.stackView addArrangedSubview:self.moreButton]; + [self.stackView addArrangedSubview:self.nobleButton]; + + self.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.15); + CAShapeLayer * layer = [CAShapeLayer layer]; + layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 52 +kSafeAreaBottomHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(25, 25)].CGPath; + self.layer.shadowColor = UIColorRGBAlpha(0xFFFFFF, 0.1).CGColor; + self.layer.shadowOffset = CGSizeMake(0, 5); + self.layer.mask = layer; } - (void)initSubViewConstraints { - [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(15); - make.right.mas_equalTo(self.giftButton.mas_left).offset(-10); - make.top.bottom.mas_equalTo(self); - }]; - - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.leading.trailing.height.mas_equalTo(self.scrollView); - }]; - if ([ClientConfig shareConfig].canOpen) { - [self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(100, 30)); - }]; - } else { - [self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(150, 30)); - }]; - } - - [self.giftButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerY.mas_equalTo(self); - make.right.mas_equalTo(self).offset(-15); - make.size.mas_equalTo(CGSizeMake(38, 38)); - }]; + [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(15); + make.right.mas_equalTo(self.giftButton.mas_left).offset(-10); + make.top.mas_equalTo(self).offset(8); + make.bottom.mas_equalTo(self).offset(-12 - kSafeAreaBottomHeight); + }]; + + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.leading.trailing.height.mas_equalTo(self.scrollView); + }]; + + [self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(95, 32)); + }]; + + [self.giftButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.scrollView); + make.right.mas_equalTo(self).offset(-20); + make.size.mas_equalTo(CGSizeMake(35, 35)); + }]; + } - (NSArray *)configGiftUsers:(NSMutableDictionary *)queue { - NSMutableArray * array = [NSMutableArray array]; - for (MicroQueueModel * microModel in queue.allValues) { - if (microModel.userInfo && microModel.userInfo.uid >0) { - UserInfoModel * userInfo = microModel.userInfo; - XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; - userModel.avatar = userInfo.avatar; - userModel.vipMic = userInfo.vipMic; - userModel.position = [NSString stringWithFormat:@"%d", microModel.microState.position]; - userModel.uid = userInfo.uid; + NSMutableArray * array = [NSMutableArray array]; + for (MicroQueueModel * microModel in queue.allValues) { + if (microModel.userInfo && microModel.userInfo.uid >0) { + UserInfoModel * userInfo = microModel.userInfo; + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = userInfo.avatar; + userModel.vipMic = userInfo.vipMic; + userModel.position = [NSString stringWithFormat:@"%d", microModel.microState.position]; + userModel.uid = userInfo.uid; if (self.delegate.getRoomInfo.type == RoomType_Anchor && microModel.microState.position == -1) {///个播房一直为离开模式,不需要添加房主位 continue; } - [array addObject:userModel]; - } - } - - if (self.delegate.getRoomInfo.leaveMode) { - RoomInfoModel * roomInfo= self.delegate.getRoomInfo; - XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; - userModel.avatar = roomInfo.avatar; - userModel.position = @"-1"; - userModel.uid = roomInfo.uid; - [array addObject:userModel]; + [array addObject:userModel]; + } + } + + if (self.delegate.getRoomInfo.leaveMode) { + RoomInfoModel * roomInfo= self.delegate.getRoomInfo; + XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; + userModel.avatar = roomInfo.avatar; + userModel.position = @"-1"; + userModel.uid = roomInfo.uid; + [array addObject:userModel]; } else if (self.delegate.getRoomInfo.type == RoomType_Anchor) { RoomInfoModel * roomInfo= self.delegate.getRoomInfo; BOOL hadContainerOwner = NO; @@ -274,222 +298,218 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey"; [array addObject:userModel]; } } - return array; + return array; } - (MicroQueueModel *)findMySelfMicro:(NSMutableDictionary *)queue { - NSString * uid = [AccountInfoStorage instance].getUid; - for (MicroQueueModel * microModel in queue.allValues) { - if (microModel.userInfo && microModel.userInfo.uid == uid.integerValue) { - return microModel; - } - } - return nil; + NSString * uid = [AccountInfoStorage instance].getUid; + for (MicroQueueModel * microModel in queue.allValues) { + if (microModel.userInfo && microModel.userInfo.uid == uid.integerValue) { + return microModel; + } + } + return nil; } #pragma mark - RoomGuestDelegate - (void)onMicroQueueUpdate:(NSMutableDictionary *)queue { - MicroQueueModel * model = [self findMySelfMicro:queue]; - if (model) { - self.micButton.hidden = NO; - self.micButton.selected = model.microState.micState == MicroMicStateType_Close ? YES : [RtcManager instance].isLocalMuted; - self.micButton.enabled = model.microState.micState == MicroMicStateType_Open; - if (![ClientConfig shareConfig].canOpen) { - self.faceButton.hidden = YES; - } else { - self.faceButton.hidden = NO; - } - } else { - self.micButton.hidden = YES; + MicroQueueModel * model = [self findMySelfMicro:queue]; + if (model) { + self.micButton.hidden = NO; + self.micButton.selected = model.microState.micState == MicroMicStateType_Close ? YES : [RtcManager instance].isLocalMuted; + self.micButton.enabled = model.microState.micState == MicroMicStateType_Open; + self.faceButton.hidden = NO; + } else { + self.micButton.hidden = YES; self.faceButton.hidden = YES; - } - + } } - (void)onRoomEntered { - NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; - self.messageButton.selected = unreadCount > 0; - [self onRoomUpdate]; + NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; + self.messageButton.selected = unreadCount > 0; + [self onRoomUpdate]; } - (void)onRoomUpdate { - RoomInfoModel * roomInfo = self.delegate.getRoomInfo; - UserInfoModel * userInfo = self.delegate.getUserInfo; - - if (userInfo.isFirstCharge) { - [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateNormal]; - [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateSelected]; - } else { - [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal]; - [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected]; - } - - if (![ClientConfig shareConfig].canOpen) { - [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift1"] forState:UIControlStateNormal]; - [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift1"] forState:UIControlStateSelected]; - } - - self.arrangeMicButton.hidden = roomInfo.roomModeType != RoomModeType_Open_Micro_Mode; - if (roomInfo.roomModeType == RoomModeType_Open_Blind || roomInfo.roomModeType == RoomModeType_Open_PK_Mode || roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) { - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - request.userIds = @[[AccountInfoStorage instance].getUid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - NIMChatroomMember * member = members.firstObject; - if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { - self.arrangeMicButton.hidden = NO; - return; - } - } - self.arrangeMicButton.hidden = YES; - }]; - } + RoomInfoModel * roomInfo = self.delegate.getRoomInfo; + UserInfoModel * userInfo = self.delegate.getUserInfo; + + if (userInfo.isFirstCharge) { + [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateNormal]; + [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateSelected]; + } else { + [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal]; + [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected]; + } + + self.arrangeMicButton.hidden = roomInfo.roomModeType != RoomModeType_Open_Micro_Mode; + if (roomInfo.roomModeType == RoomModeType_Open_Blind || roomInfo.roomModeType == RoomModeType_Open_PK_Mode || roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) { + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + if (error == nil) { + NIMChatroomMember * member = members.firstObject; + if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { + self.arrangeMicButton.hidden = NO; + return; + } + } + self.arrangeMicButton.hidden = YES; + }]; + } } - (void)handleNIMCustomMessage:(NIMMessage *)message { - NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; - if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { - AttachmentModel *attachment = (AttachmentModel *)obj.attachment; - if (attachment.first == CustomMessageType_Arrange_Mic || attachment.first == CustomMessageType_Room_PK) { - if (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Arrange_Mic_Empty || attachment.second == Custom_Message_Sub_Room_PK_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty) { - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; - request.userIds = @[[AccountInfoStorage instance].getUid]; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - NIMChatroomMember * member; - if (error == nil) { - member = members.firstObject; - } - if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { - self.arrangeMicButton.selected = (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty); - }; - }]; - } - } - } + NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; + if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { + AttachmentModel *attachment = (AttachmentModel *)obj.attachment; + if (attachment.first == CustomMessageType_Arrange_Mic || attachment.first == CustomMessageType_Room_PK) { + if (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Arrange_Mic_Empty || attachment.second == Custom_Message_Sub_Room_PK_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty) { + NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; + request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; + request.userIds = @[[AccountInfoStorage instance].getUid]; + [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + NIMChatroomMember * member; + if (error == nil) { + member = members.firstObject; + } + if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { + self.arrangeMicButton.selected = (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty); + }; + }]; + } + } + } } - (void)handleNIMNotificationMessage:(NIMMessage *)message { - NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; - NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; - switch (content.eventType) { - case NIMChatroomEventTypeAddManager: - { - if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { - for (NIMChatroomNotificationMember * member in content.targets) { - if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { - self.arrangeMicButton.hidden = NO; - break; - } - } - } - } - break; - case NIMChatroomEventTypeRemoveManager: - { - if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { - for (NIMChatroomNotificationMember * member in content.targets) { - if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { - self.arrangeMicButton.hidden = YES; - break; - } - } - } - } - break; - default: - break; - } + NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; + NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; + switch (content.eventType) { + case NIMChatroomEventTypeAddManager: + { + if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + for (NIMChatroomNotificationMember * member in content.targets) { + if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { + self.arrangeMicButton.hidden = NO; + break; + } + } + } + } + break; + case NIMChatroomEventTypeRemoveManager: + { + if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { + for (NIMChatroomNotificationMember * member in content.targets) { + if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { + self.arrangeMicButton.hidden = YES; + break; + } + } + } + } + break; + default: + break; + } } - (void)addNIMRecentSession:(NIMRecentSession *)session { - if (!self.miniMessageView.superview) { - [self.superview insertSubview:self.miniMessageView aboveSubview:self]; - [self.miniMessageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.mas_equalTo(self.messageButton); - make.bottom.mas_equalTo(self.messageButton.mas_top).offset(-2); - make.size.mas_equalTo(CGSizeMake(87, 55)); - }]; - } - [self.miniMessageView addRecentSession:session]; - NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; - self.messageButton.selected = unreadCount > 0; + if (!self.miniMessageView.superview) { + [self.superview insertSubview:self.miniMessageView aboveSubview:self]; + [self.miniMessageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.mas_equalTo(self.messageButton); + make.bottom.mas_equalTo(self.messageButton.mas_top).offset(-2); + make.size.mas_equalTo(CGSizeMake(87, 55)); + }]; + } + [self.miniMessageView addRecentSession:session]; + NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; + self.messageButton.selected = unreadCount > 0; } - (void)removeNIMRecentSession:(NIMRecentSession *)session { - NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; - self.messageButton.selected = unreadCount > 0; + NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; + self.messageButton.selected = unreadCount > 0; } #pragma mark - XPRoomMessageBubbleViewDelegate - (void)xPRoomMessageBubbleView:(XPRoomMessageBubbleView *)view didSelectSession:(NIMRecentSession *)session { - UIViewController * controller = (UIViewController *)self.delegate; - XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; - halfMessageView.chatUserId = session.session.sessionId; - [controller.view addSubview:halfMessageView]; - [UIView animateWithDuration:.35 animations:^{ - CGRect rect = halfMessageView.frame; - rect.origin.y = 0; - halfMessageView.frame = rect; - }]; + UIViewController * controller = (UIViewController *)self.delegate; + XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; + halfMessageView.chatUserId = session.session.sessionId; + [controller.view addSubview:halfMessageView]; + [UIView animateWithDuration:.35 animations:^{ + CGRect rect = halfMessageView.frame; + rect.origin.y = 0; + halfMessageView.frame = rect; + }]; } #pragma mark - Getters And Setters - (UIButton *)inputButton { - if (!_inputButton) { - _inputButton = [UIButton buttonWithType:UIButtonTypeCustom]; - if ([ClientConfig shareConfig].canOpen) { - [_inputButton setTitle:YMLocalizedString(@"XPRoomMenuContainerView2") forState:UIControlStateNormal]; - } else { - [_inputButton setTitle:YMLocalizedString(@"XPRoomMenuContainerView3") forState:UIControlStateNormal]; - } - - [_inputButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; - _inputButton.titleLabel.font = [UIFont systemFontOfSize:15]; - _inputButton.layer.masksToBounds = YES; - _inputButton.layer.cornerRadius = 15; - _inputButton.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.3); - _inputButton.tag = XPRoomMenuItemType_Input; - [_inputButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _inputButton; + if (!_inputButton) { + _inputButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_inputButton setTitle:YMLocalizedString(@"XPRoomMenuContainerView2") forState:UIControlStateNormal]; + [_inputButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _inputButton.titleLabel.font = [UIFont systemFontOfSize:12]; + _inputButton.layer.masksToBounds = YES; + _inputButton.layer.cornerRadius = 15; + [_inputButton setBackgroundImage:[UIImage imageNamed:@"room_menu_send_bg"] forState:UIControlStateNormal]; + _inputButton.tag = XPRoomMenuItemType_Input; + [_inputButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _inputButton; } - (UIButton *)micButton { - if (!_micButton) { - _micButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_open"] forState:UIControlStateNormal]; - [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateSelected]; - [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateDisabled | UIControlStateSelected]; - _micButton.tag = XPRoomMenuItemType_Mic; - [_micButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _micButton.hidden = YES; - } - return _micButton; + if (!_micButton) { + _micButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_open"] forState:UIControlStateNormal]; + [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateSelected]; + [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateDisabled | UIControlStateSelected]; + _micButton.tag = XPRoomMenuItemType_Mic; + [_micButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _micButton.hidden = YES; + } + return _micButton; +} + +- (UIButton *)voiceButton { + if (!_voiceButton) { + _voiceButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_voiceButton setImage:[UIImage imageNamed:@"room_menu_voice_open"] forState:UIControlStateNormal]; + [_voiceButton setImage:[UIImage imageNamed:@"room_menu_voice_close"] forState:UIControlStateSelected]; + _voiceButton.tag = XPRoomMenuItemType_Voice; + [_voiceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _voiceButton; } - (UIButton *)faceButton { - if (!_faceButton) { - _faceButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateNormal]; - [_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateSelected]; - _faceButton.tag = XPRoomMenuItemType_Face; - [_faceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _faceButton.hidden = YES; - } - return _faceButton; + if (!_faceButton) { + _faceButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateNormal]; + [_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateSelected]; + _faceButton.tag = XPRoomMenuItemType_Face; + [_faceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _faceButton.hidden = YES; + } + return _faceButton; } - (UIButton *)messageButton { - if (!_messageButton) { - _messageButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_messageButton setImage:[UIImage imageNamed:@"room_menu_message"] forState:UIControlStateNormal]; - [_messageButton setImage:[UIImage imageNamed:@"room_menu_new_message"] forState:UIControlStateSelected]; - _messageButton.tag = XPRoomMenuItemType_Message; - [_messageButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _messageButton; + if (!_messageButton) { + _messageButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_messageButton setImage:[UIImage imageNamed:@"room_menu_message"] forState:UIControlStateNormal]; + [_messageButton setImage:[UIImage imageNamed:@"room_menu_new_message"] forState:UIControlStateSelected]; + _messageButton.tag = XPRoomMenuItemType_Message; + [_messageButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _messageButton; } - (UIButton *)moreButton { @@ -514,54 +534,54 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey"; } - (UIButton *)giftButton { - if (!_giftButton) { - _giftButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal]; - [_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected]; - _giftButton.tag = XPRoomMenuItemType_Gift; - [_giftButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _giftButton; + if (!_giftButton) { + _giftButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal]; + [_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected]; + _giftButton.tag = XPRoomMenuItemType_Gift; + [_giftButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + } + return _giftButton; } - (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 8; - } - return _stackView; + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 12; + } + return _stackView; } - (UIButton *)arrangeMicButton { - if (!_arrangeMicButton) { - _arrangeMicButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic"] forState:UIControlStateNormal]; - [_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic_new"] forState:UIControlStateSelected]; - _arrangeMicButton.tag = XPRoomMenuItemType_ArrangeMic; - [_arrangeMicButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - _arrangeMicButton.hidden = YES; - } - return _arrangeMicButton; + if (!_arrangeMicButton) { + _arrangeMicButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic"] forState:UIControlStateNormal]; + [_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic_new"] forState:UIControlStateSelected]; + _arrangeMicButton.tag = XPRoomMenuItemType_ArrangeMic; + [_arrangeMicButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + _arrangeMicButton.hidden = YES; + } + return _arrangeMicButton; } - (UIScrollView *)scrollView { - if (!_scrollView) { - _scrollView = [[UIScrollView alloc] init]; - _scrollView.backgroundColor = [UIColor clearColor]; - _scrollView.showsHorizontalScrollIndicator = NO; - } - return _scrollView; + if (!_scrollView) { + _scrollView = [[UIScrollView alloc] init]; + _scrollView.backgroundColor = [UIColor clearColor]; + _scrollView.showsHorizontalScrollIndicator = NO; + } + return _scrollView; } - (XPRoomMessageBubbleView *)miniMessageView { - if (!_miniMessageView) { - _miniMessageView = [[XPRoomMessageBubbleView alloc] init]; - _miniMessageView.delegate = self; - } - return _miniMessageView; + if (!_miniMessageView) { + _miniMessageView = [[XPRoomMessageBubbleView alloc] init]; + _miniMessageView.delegate = self; + } + return _miniMessageView; } @end diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.h b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.h index 386c6a46..286360ce 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.h +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.h @@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN @interface XPRoomSendTextView : UIView -- (instancetype) :(id)delegate; +- (instancetype)initWithDelegate:(id)delegate; ///输入框 @property (nonatomic, strong, readonly) UITextField *editTextFiled; ///发小消息的弹框 diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m index 9af78160..b8a0f521 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m @@ -1,8 +1,8 @@ // -// YMRoomSendTextView.m -// YUMI +// XPRoomSendTextView.m +// xplan-ios // -// Created by YUMI on 2021/10/29. +// Created by 冯硕 on 2021/10/29. // #import "XPRoomSendTextView.h" @@ -13,11 +13,8 @@ #import ///Tool #import "ThemeColor+Room.h" -#import "YUMIMacroUitls.h" #import "UIImage+Utils.h" -#import "YUMIConstant.h" #import "AccountInfoStorage.h" -#import "NSMutableDictionary+Saft.h" ///Model #import "XPMessageRemoteExtModel.h" #import "UserInfoModel.h" @@ -46,39 +43,39 @@ @implementation XPRoomSendTextView - (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (instancetype)initWithDelegate:(id)delegate { - self = [super initWithFrame:CGRectMake(0, KScreenHeight - 40, KScreenWidth, 40)]; - if (self) { - self.delegate = delegate; - [self addNotification]; - [self initSubViews]; - [self initSubViewConstraints]; + self = [super initWithFrame:CGRectMake(0, KScreenHeight - 40, KScreenWidth, 40)]; + if (self) { + self.delegate = delegate; + [self addNotification]; + [self initSubViews]; + [self initSubViewConstraints]; [IQKeyboardManager sharedManager].enable = NO; - } - return self; + } + return self; } #pragma mark - Response - (void)sendButtonDidClick:(UIButton *)sender { - UserInfoModel * userInfo = [self.delegate getUserInfo]; - XPMessageRemoteExtModel *extModel = [[XPMessageRemoteExtModel alloc] init]; - extModel.defUser = userInfo.defUser; - extModel.erbanNo = userInfo.erbanNo; - extModel.carName = userInfo.carName; - extModel.inRoomNameplatePic = userInfo.nameplatePic; - extModel.inRoomNameplateWord = userInfo.nameplateWord; - extModel.charmUrl = userInfo.userLevelVo.charmUrl; - extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; - extModel.experUrl = userInfo.userLevelVo.experUrl; - extModel.newUser = userInfo.newUser; + UserInfoModel * userInfo = [self.delegate getUserInfo]; + XPMessageRemoteExtModel *extModel = [[XPMessageRemoteExtModel alloc] init]; + extModel.defUser = userInfo.defUser; + extModel.erbanNo = userInfo.erbanNo; + extModel.carName = userInfo.carName; + extModel.inRoomNameplatePic = userInfo.nameplatePic; + extModel.inRoomNameplateWord = userInfo.nameplateWord; + extModel.charmUrl = userInfo.userLevelVo.charmUrl; + extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; + extModel.experUrl = userInfo.userLevelVo.experUrl; + extModel.newUser = userInfo.newUser; extModel.vipIcon = userInfo.userVipInfoVO.vipIcon; extModel.androidBubbleUrl = userInfo.androidBubbleUrl; extModel.iosBubbleUrl = userInfo.iosBubbleUrl; - extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; NIMMessage * message = [[NIMMessage alloc] init]; message.text = self.inputMessage; @@ -99,25 +96,26 @@ } id uidStr = [uidArray toJSONObject]; id nickStr = [nickArray toJSONObject]; - [remoteExt safeSetObject:uidStr forKey:@"atUids"]; - [remoteExt safeSetObject:nickStr forKey:@"atNames"]; + [remoteExt setObject:uidStr forKey:@"atUids"]; + [remoteExt setObject:nickStr forKey:@"atNames"]; message.remoteExt = remoteExt; - ///网易易盾 拦截高风险 - NIMAntiSpamOption *option = [[NIMAntiSpamOption alloc]init]; - option.yidunEnabled = YES; - option.businessId = KeyWithType(keyType_YiDunBussinessId); - message.antiSpamOption = option; - NSString * sessionId = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].roomId]; - //构造会话 - NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) { - self.editTextFiled.text = @""; - [self.editTextFiled resignFirstResponder]; + ///网易易盾 拦截高风险 + NIMAntiSpamOption *option = [[NIMAntiSpamOption alloc]init]; + option.yidunEnabled = YES; + option.businessId = KeyWithType(keyType_YiDunBussinessId); + message.antiSpamOption = option; + NSString * sessionId = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].roomId]; + //构造会话 + self.sendButton.enabled = NO; + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) { + self.editTextFiled.text = @""; + [self.editTextFiled resignFirstResponder]; [self.atUids removeAllObjects]; [self.atNames removeAllObjects]; self.inputMessage = nil; - }]; + }]; } - (void)keyboardWillShow:(NSNotification *)notification { @@ -130,11 +128,13 @@ CGRect endKeyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGFloat h = endKeyboardRect.size.height; [UIView animateWithDuration:duration animations:^{ - [self mas_remakeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.superview); - make.height.equalTo(@40); - make.bottom.equalTo(self.superview).offset(-h); - }]; + if(self.superview){ + [self mas_remakeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.superview); + make.height.equalTo(@40); + make.bottom.equalTo(self.superview).offset(-h); + }]; + } [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationCurve:[curve intValue]]; self.center = CGPointMake(self.center.x, keyBoardEndY - statusbarHeight - self.bounds.size.height/2.0); @@ -155,68 +155,68 @@ } -(void)textFieldEditChanged:(NSNotification *)notification{ - UITextField *textField = (UITextField *)notification.object; - NSString *toBeString = textField.text; - NSString *lang = [textField.textInputMode primaryLanguage]; - if ([lang isEqualToString:@"zh-Hans"]){// 简体中文输入 - //获取高亮部分 - UITextRange *selectedRange = [textField markedTextRange]; - UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; - // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 - if (!position){ - if (toBeString.length > MAX_STARWORDS_LENGTH){ - NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; - if (rangeIndex.length == 1){ - - textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; - }else{ - NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; - textField.text = [toBeString substringWithRange:rangeRange]; - } - } - } - }else{ // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况 - if (toBeString.length > MAX_STARWORDS_LENGTH){ - NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; - if (rangeIndex.length == 1){ - - textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; - }else{ - - NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; - textField.text = [toBeString substringWithRange:rangeRange]; - } - } - } - self.inputMessage = textField.text; - if (self.inputMessage.length > 0) { - self.sendButton.enabled = YES; - } else { - self.sendButton.enabled = NO; - } + UITextField *textField = (UITextField *)notification.object; + NSString *toBeString = textField.text; + NSString *lang = [textField.textInputMode primaryLanguage]; + if ([lang isEqualToString:@"zh-Hans"]){// 简体中文输入 + //获取高亮部分 + UITextRange *selectedRange = [textField markedTextRange]; + UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; + // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 + if (!position){ + if (toBeString.length > MAX_STARWORDS_LENGTH){ + NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; + if (rangeIndex.length == 1){ + + textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; + }else{ + NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; + textField.text = [toBeString substringWithRange:rangeRange]; + } + } + } + }else{ // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况 + if (toBeString.length > MAX_STARWORDS_LENGTH){ + NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; + if (rangeIndex.length == 1){ + + textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; + }else{ + + NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; + textField.text = [toBeString substringWithRange:rangeRange]; + } + } + } + self.inputMessage = textField.text; + if (self.inputMessage.length > 0) { + self.sendButton.enabled = YES; + } else { + self.sendButton.enabled = NO; + } } #pragma mark - Public Method + (instancetype)showTextView:(UIView *)view delegate:(id)delegate atUid:(NSString *)uid atNick:(NSString *)nick { - __block XPRoomSendTextView * textView; - [view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if ([obj isKindOfClass:[XPRoomSendTextView class]]) { - textView = obj; - *stop = YES; - } - }]; - if (textView == nil) { - textView = [[XPRoomSendTextView alloc] initWithDelegate:delegate]; - [view addSubview:textView]; - } - textView.hidden = NO; + __block XPRoomSendTextView * textView; + [view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + if ([obj isKindOfClass:[XPRoomSendTextView class]]) { + textView = obj; + *stop = YES; + } + }]; + if (textView == nil) { + textView = [[XPRoomSendTextView alloc] initWithDelegate:delegate]; + [view addSubview:textView]; + } + textView.hidden = NO; - [textView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.bottom.mas_equalTo(view); - make.height.mas_equalTo(40); - }]; - [textView.editTextFiled becomeFirstResponder]; + [textView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.mas_equalTo(view); + make.height.mas_equalTo(40); + }]; + [textView.editTextFiled becomeFirstResponder]; if (nick) { [textView.atUids addObject:uid]; [textView.atNames addObject:[NSString stringWithFormat:@"@%@", nick]]; @@ -224,75 +224,75 @@ textView.inputMessage = textView.editTextFiled.text; textView.sendButton.enabled = YES; } - return textView; + return textView; } #pragma mark - Private Method - (void)initSubViews { - self.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; - [self addSubview:self.stackView]; - [self.stackView addArrangedSubview:self.editTextFiled]; - [self.stackView addArrangedSubview:self.sendButton]; + self.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; + [self addSubview:self.stackView]; + [self.stackView addArrangedSubview:self.editTextFiled]; + [self.stackView addArrangedSubview:self.sendButton]; } - (void)initSubViewConstraints { - [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self).offset(8); - make.right.mas_equalTo(self).offset(-5); - make.top.bottom.mas_equalTo(self); - }]; - - [self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(50); - make.top.bottom.mas_equalTo(self).inset(5); - }]; + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self).offset(8); + make.right.mas_equalTo(self).offset(-5); + make.top.bottom.mas_equalTo(self); + }]; + + [self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(50); + make.top.bottom.mas_equalTo(self).inset(5); + }]; } - (void)addNotification { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHidden:) name:UIKeyboardWillHideNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:UITextFieldTextDidChangeNotification object:self.editTextFiled]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHidden:) name:UIKeyboardWillHideNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:UITextFieldTextDidChangeNotification object:self.editTextFiled]; } #pragma mark - Getters And Setters - (UITextField *)editTextFiled{ - if (!_editTextFiled) { - _editTextFiled = [[UITextField alloc] init]; - NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPRoomSendTextView0") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; - _editTextFiled.attributedPlaceholder = attribute; - _editTextFiled.borderStyle = UITextBorderStyleNone; - _editTextFiled.textColor = [DJDKMIMOMColor alertTitleColor]; - _editTextFiled.font = [UIFont systemFontOfSize:15]; - [_editTextFiled setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; - - } - return _editTextFiled; + if (!_editTextFiled) { + _editTextFiled = [[UITextField alloc] init]; + NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPRoomSendTextView0") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; + _editTextFiled.attributedPlaceholder = attribute; + _editTextFiled.borderStyle = UITextBorderStyleNone; + _editTextFiled.textColor = [DJDKMIMOMColor alertTitleColor]; + _editTextFiled.font = [UIFont systemFontOfSize:15]; + [_editTextFiled setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; + + } + return _editTextFiled; } - (UIButton *)sendButton{ - if (!_sendButton) { - _sendButton = [[UIButton alloc] init]; - [_sendButton setTitle:YMLocalizedString(@"XPRoomSendTextView1") forState:UIControlStateNormal]; - _sendButton.titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; - _sendButton.titleLabel.font = [UIFont systemFontOfSize:15]; - [_sendButton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor] ]forState:UIControlStateDisabled]; - [_sendButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; - _sendButton.enabled = NO; - _sendButton.layer.cornerRadius = 5.0; - _sendButton.layer.masksToBounds = YES; - [_sendButton addTarget:self action:@selector(sendButtonDidClick:) forControlEvents:UIControlEventTouchUpInside]; - } - return _sendButton; + if (!_sendButton) { + _sendButton = [[UIButton alloc] init]; + [_sendButton setTitle:YMLocalizedString(@"XPRoomSendTextView1") forState:UIControlStateNormal]; + _sendButton.titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; + _sendButton.titleLabel.font = [UIFont systemFontOfSize:15]; + [_sendButton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor] ]forState:UIControlStateDisabled]; + [_sendButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; + _sendButton.enabled = NO; + _sendButton.layer.cornerRadius = 5.0; + _sendButton.layer.masksToBounds = YES; + [_sendButton addTarget:self action:@selector(sendButtonDidClick:) forControlEvents:UIControlEventTouchUpInside]; + } + return _sendButton; } - (UIStackView *)stackView { - if (!_stackView) { - _stackView = [[UIStackView alloc] init]; - _stackView.axis = UILayoutConstraintAxisHorizontal; - _stackView.distribution = UIStackViewDistributionFill; - _stackView.alignment = UIStackViewAlignmentCenter; - _stackView.spacing = 10; - } - return _stackView; + if (!_stackView) { + _stackView = [[UIStackView alloc] init]; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.distribution = UIStackViewDistributionFill; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 10; + } + return _stackView; } - (NSMutableArray *)atNames { diff --git a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m index 1462ffe1..e815210b 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m +++ b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m @@ -123,12 +123,7 @@ redPacket.type = RoomMoreMenuType_Room_redPacket; redPacket.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; - XPRoomMoreItemModel * voice = [[XPRoomMoreItemModel alloc] init]; - voice.title = YMLocalizedString(@"XPMoreMenuPresenter25"); - voice.imageName = [RtcManager instance].isRemoteMuted ? @"room_more_voice_close" : @"room_more_voice_open"; - voice.type = RoomMoreMenuType_Room_Voice; - voice.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; - voice.isSelected = [RtcManager instance].isRemoteMuted; + XPRoomMoreItemModel * report = [[XPRoomMoreItemModel alloc] init]; report.title = YMLocalizedString(@"XPMoreMenuPresenter36"); @@ -192,13 +187,13 @@ } else { [array addObject:giftEffect]; } - [array addObject:voice]; + if (![ClientConfig shareConfig].canOpen) { [array removeAllObjects]; [array addObject:clearScreen]; [array addObject:roomSetting]; - [array addObject:voice]; + } [array addObject:report]; [[self getView] getMoreMenuDataSuccess:array]; diff --git a/YuMi/Modules/YMRoom/View/XPRoomViewController.m b/YuMi/Modules/YMRoom/View/XPRoomViewController.m index 68aebbfb..b3f51b6b 100644 --- a/YuMi/Modules/YMRoom/View/XPRoomViewController.m +++ b/YuMi/Modules/YMRoom/View/XPRoomViewController.m @@ -354,9 +354,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 make.left.right.mas_equalTo(self.view); }]; [self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.view); - make.bottom.mas_equalTo(-kSafeAreaBottomHeight- 8); - make.height.mas_equalTo(40); + make.left.right.bottom.mas_equalTo(self.view); + make.height.mas_equalTo(52 + kSafeAreaBottomHeight); }]; [self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) { @@ -404,9 +403,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 make.right.equalTo(self.activityContainerView.mas_left).offset(-10); }]; [self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); - make.bottom.mas_equalTo(self.anchorScrollView.middleImageView).offset(-kSafeAreaBottomHeight- 8); - make.height.mas_equalTo(40); + make.left.right.bottom.mas_equalTo(self.anchorScrollView.middleImageView); + make.height.mas_equalTo(52 + kSafeAreaBottomHeight); }]; [self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.messageContainerView); diff --git a/YuMi/zh-Hans.lproj/Localizable.strings b/YuMi/zh-Hans.lproj/Localizable.strings index c9c7c936..33d3c705 100644 --- a/YuMi/zh-Hans.lproj/Localizable.strings +++ b/YuMi/zh-Hans.lproj/Localizable.strings @@ -1099,7 +1099,7 @@ "XPMoreMenuPresenter22" = "邀请粉丝"; "XPMoreMenuPresenter23" = "发佈广播"; "XPMoreMenuPresenter24" = "红包"; -"XPMoreMenuPresenter25" = "扬声器"; + "XPMoreMenuPresenter26" = "PK中..."; "XPMoreMenuPresenter27" = "关闭礼物值"; "XPMoreMenuPresenter28" = "关闭我的特效"; diff --git a/YuMi/zh-Hant.lproj/Localizable.strings b/YuMi/zh-Hant.lproj/Localizable.strings index 1e337dd5..36d8e9bc 100644 --- a/YuMi/zh-Hant.lproj/Localizable.strings +++ b/YuMi/zh-Hant.lproj/Localizable.strings @@ -1099,7 +1099,7 @@ "XPMoreMenuPresenter22" = "邀請粉絲"; "XPMoreMenuPresenter23" = "發佈廣播"; "XPMoreMenuPresenter24" = "紅包"; -"XPMoreMenuPresenter25" = "揚聲器"; + "XPMoreMenuPresenter26" = "PK中..."; "XPMoreMenuPresenter27" = "關閉禮物值"; "XPMoreMenuPresenter28" = "關閉我的特效";