You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

694 lines
29 KiB

//
// TFComicBrowseBottomBar.m
// TFReader
//
// Created by 谢腾飞 on 2020/12/16.
// Copyright © 2020 xtfei_2011@126.com. All rights reserved.
//
#import "TFComicBrowseBottomBar.h"
#import "TFComicBrowseSetBar.h"
#import "TFShareManager.h"
#import "WXYZ_ComicDownloadManager.h"
#import "TFCollectionManager.h"
#import "WXYZ_BadgeView.h"
#import "UIControl+EventInterval.h"
#define MenuButtonHeight 50
@interface TFComicBrowseBottomBar ()
{
#if TF_Comments_Mode
UIButton *commentsButton;
#endif
#if TF_Comments_Mode
YYTextView *commentsTextView;
UIButton *sendComments;
#endif
UILabel *currentPageLabel;
UIButton *previousButton;
UIButton *nextButton;
UIActivityIndicatorView *indicatorView;
TFButton *barrageSwitch;
TFComicBrowseSetBar *settingBar;
UIButton *scrollToTop;
UIButton *collectionButton;
CGFloat keyboardHeight; //键盘高度
BOOL isCommentState; // 是否是评论状态
__weak UIButton *_leftImageButton;
WXYZ_BadgeView *badgeView;
}
@end
@implementation TFComicBrowseBottomBar
- (instancetype)init
{
if (self = [super init]) {
#if TF_Comments_Mode
self.frame = CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height);
#else
self.frame = CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, Comic_Menu_Bottom_Bar_Height - Comic_Menu_Bottom_Bar_Top_Height);
#endif
self.backgroundColor = kGrayViewColor;
//增加监听,当键盘出现或改变时收出消息
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotification object:nil];
//增加监听,当键退出时收出消息
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:)name:UIKeyboardWillHideNotification object:nil];
[self createSubViews];
}
return self;
}
- (void)createSubViews
{
#if TF_Comments_Mode
sendComments = [UIButton buttonWithType:UIButtonTypeCustom];
if ([[[NSUserDefaults standardUserDefaults] objectForKey:Enable_Barrage] isEqualToString:@"1"]) {
[sendComments setTitle:TFLocalizedString(@"发射") forState:UIControlStateNormal];
isCommentState = NO;
} else {
[sendComments setTitle:TFLocalizedString(@"发送") forState:UIControlStateNormal];
isCommentState = YES;
}
sendComments.backgroundColor = [UIColor clearColor];
[sendComments setTitleColor:kBlackColor forState:UIControlStateNormal];
[sendComments.titleLabel setFont:kMainFont];
[sendComments addTarget:self action:@selector(sendCommentsClick) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:sendComments];
[sendComments mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.mas_right);
make.top.mas_equalTo(kQuarterMargin);
make.width.mas_equalTo(70);
make.height.mas_equalTo(Comic_Menu_Bottom_Bar_Top_Height - kHalfMargin);
}];
commentsTextView = [[YYTextView alloc] init];
commentsTextView.backgroundColor = kWhiteColor;
commentsTextView.contentInset = UIEdgeInsetsMake(2, 30, 0, 0);
commentsTextView.textVerticalAlignment = YYTextVerticalAlignmentCenter;
if ([[[NSUserDefaults standardUserDefaults] objectForKey:Enable_Barrage] isEqualToString:@"1"]) {
commentsTextView.placeholderText = TFLocalizedString(@"发一条弹幕吧");
} else {
commentsTextView.placeholderText = TFLocalizedString(@"发一条评论吧");
}
commentsTextView.placeholderFont = kFont12;
commentsTextView.placeholderTextColor = kGrayTextColor;
commentsTextView.font = kFont12;
commentsTextView.returnKeyType = UIReturnKeySend;
commentsTextView.layer.cornerRadius = (Comic_Menu_Bottom_Bar_Top_Height - kHalfMargin) / 2;
commentsTextView.layer.borderColor = kGrayViewColor.CGColor;
commentsTextView.layer.borderWidth = 0.8;
commentsTextView.delegate = self;
[self addSubview:commentsTextView];
[commentsTextView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(kMargin);
make.top.mas_equalTo(kQuarterMargin);
make.right.mas_equalTo(sendComments.mas_left).with.offset(kHalfMargin);
make.height.mas_equalTo(sendComments.mas_height);
}];
UIButton *leftImageButton = [[UIButton alloc] init];
_leftImageButton = leftImageButton;
if ([[[NSUserDefaults standardUserDefaults] objectForKey:Enable_Barrage] isEqualToString:@"1"]) {
leftImageButton.tag = 0;
[leftImageButton setImage:[UIImage imageNamed:TFLocalizedString(@"comic_barrage")] forState:UIControlStateNormal];
} else {
leftImageButton.tag = 1;
[leftImageButton setImage:[UIImage imageNamed:TFLocalizedString(@"comic_comments_icon")] forState:UIControlStateNormal];
}
leftImageButton.adjustsImageWhenHighlighted = NO;
[leftImageButton addTarget:self action:@selector(changeCommentsState:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:leftImageButton];
[leftImageButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(commentsTextView.mas_left).with.offset(kQuarterMargin);
make.centerY.mas_equalTo(sendComments.mas_centerY);
make.width.height.mas_equalTo(30 - kHalfMargin);
}];
#endif
// 上一话
previousButton = [UIButton buttonWithType:UIButtonTypeCustom];
previousButton.backgroundColor = [UIColor clearColor];
previousButton.adjustsImageWhenHighlighted = NO;
previousButton.enabled = NO;
[previousButton.titleLabel setFont:kMainFont];
[previousButton setImage:[[UIImage imageNamed:@"public_back"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[previousButton setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[previousButton setTintColor:kGrayTextLightColor];
[previousButton setImageEdgeInsets:UIEdgeInsetsMake(14, 20, 14, 8)];
[previousButton addTarget:self action:@selector(previousButtonClick) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:previousButton];
[previousButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.mas_left);
make.bottom.mas_equalTo(self.mas_bottom).with.offset(- PUB_TABBAR_OFFSET);
make.width.mas_equalTo(PUB_TABBAR_HEIGHT - PUB_TABBAR_OFFSET);
make.height.mas_equalTo(PUB_TABBAR_HEIGHT - PUB_TABBAR_OFFSET);
}];
currentPageLabel = [[UILabel alloc] init];
currentPageLabel.text = TFLocalizedString(@"当前话");
currentPageLabel.textAlignment = NSTextAlignmentCenter;
currentPageLabel.textColor = kBlackColor;
currentPageLabel.font = kMainFont;
[self addSubview:currentPageLabel];
[currentPageLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(previousButton.mas_right);
make.centerY.mas_equalTo(previousButton.mas_centerY);
make.width.mas_equalTo(70);
make.height.mas_equalTo(previousButton.mas_height);
}];
indicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyleGray)];
indicatorView.color = kBlackColor;
indicatorView.hidesWhenStopped = YES;
[currentPageLabel addSubview:indicatorView];
[indicatorView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(currentPageLabel.mas_centerX);
make.centerY.mas_equalTo(currentPageLabel.mas_centerY);
make.width.height.mas_equalTo(previousButton.mas_height);
}];
// 下一话
nextButton = [UIButton buttonWithType:UIButtonTypeCustom];
nextButton.backgroundColor = [UIColor clearColor];
nextButton.adjustsImageWhenHighlighted = NO;
nextButton.transform = CGAffineTransformMakeRotation(M_PI);
nextButton.enabled = NO;
[nextButton.titleLabel setFont:kMainFont];
[nextButton setImage:[[UIImage imageNamed:@"public_back"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[nextButton setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[nextButton setTintColor:kGrayTextLightColor];
[nextButton setImageEdgeInsets:UIEdgeInsetsMake(14, 20, 14, 8)];
[nextButton addTarget:self action:@selector(nextButtonClick) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:nextButton];
[nextButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(currentPageLabel.mas_right);
make.centerY.mas_equalTo(previousButton.mas_centerY);
make.width.mas_equalTo(previousButton.mas_width);
make.height.mas_equalTo(previousButton.mas_height);
}];
UIView *buttonMenuBar = [[UIView alloc] init];
buttonMenuBar.backgroundColor = [UIColor clearColor];
[self addSubview:buttonMenuBar];
[buttonMenuBar mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(nextButton.mas_right).with.offset(kMargin);
make.centerY.mas_equalTo(previousButton.mas_centerY);
make.right.mas_equalTo(self.mas_right).with.offset(- kMargin);
make.height.mas_equalTo(30);
}];
UIButton *settingButton = [UIButton buttonWithType:UIButtonTypeCustom];
settingButton.adjustsImageWhenHighlighted = NO;
settingButton.tintColor = kColorRGB(111, 111, 111);
settingButton.touchEventInterval = 0.5;
[settingButton setImage:[[UIImage imageNamed:@"comic_setting"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[settingButton setImageEdgeInsets:UIEdgeInsetsMake(3, 3, 3, 3)];
[settingButton addTarget:self action:@selector(settingButtonClick) forControlEvents:UIControlEventTouchUpInside];
[buttonMenuBar addSubview:settingButton];
#if TF_Download_Mode
UIButton *downloadButton = [UIButton buttonWithType:UIButtonTypeCustom];
downloadButton.adjustsImageWhenHighlighted = NO;
downloadButton.tintColor = kColorRGB(111, 111, 111);
downloadButton.touchEventInterval = 0.5;
[downloadButton setImage:[[UIImage imageNamed:@"comic_download"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[downloadButton setImageEdgeInsets:UIEdgeInsetsMake(3, 3, 4, 4)];
[downloadButton addTarget:self action:@selector(downloadButtonClick) forControlEvents:UIControlEventTouchUpInside];
[buttonMenuBar addSubview:downloadButton];
#endif
UIButton *shareButton = [UIButton buttonWithType:UIButtonTypeCustom];
shareButton.adjustsImageWhenHighlighted = NO;
shareButton.tintColor = kColorRGB(111, 111, 111);
shareButton.touchEventInterval = 0.5;
[shareButton setImage:[[UIImage imageNamed:@"comic_share"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[shareButton setImageEdgeInsets:UIEdgeInsetsMake(4, 4, 4, 4)];
[shareButton addTarget:self action:@selector(shareButtonClick:) forControlEvents:UIControlEventTouchUpInside];
[buttonMenuBar addSubview:shareButton];
#if TF_Comments_Mode
commentsButton = [UIButton buttonWithType:UIButtonTypeCustom];
commentsButton.adjustsImageWhenHighlighted = NO;
commentsButton.tintColor = kColorRGB(111, 111, 111);
commentsButton.touchEventInterval = 0.5;
[commentsButton setImage:[[UIImage imageNamed:@"comic_comments"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal];
[commentsButton setImageEdgeInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
[commentsButton addTarget:self action:@selector(checkCommentsClick) forControlEvents:UIControlEventTouchUpInside];
[buttonMenuBar addSubview:commentsButton];
badgeView = [[WXYZ_BadgeView alloc] initWithView:commentsButton];
[badgeView setCircleAtFrame:CGRectMake(0, 0, 17, 17)];
[badgeView moveCircleByX:18 Y:- 2];
badgeView.maxCount = 99;
[badgeView setCircleColor:kRedColor labelColor:kWhiteColor];
[badgeView setCountLabelFont:kFont9];
#endif
NSArray *buttonMenuArr = [NSArray arrayWithObjects:
#if TF_Comments_Mode
commentsButton,
#endif
shareButton,
#if TF_Download_Mode
downloadButton,
#endif
settingButton, nil];
[buttonMenuArr mas_distributeViewsAlongAxis:MASAxisTypeHorizontal withFixedItemLength:30 leadSpacing:0 tailSpacing:0];
[buttonMenuArr mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(0);
make.height.mas_equalTo(30);
}];
#if TF_Comments_Mode
NSString *imageName = nil;
if ([[[NSUserDefaults standardUserDefaults] objectForKey:Enable_Barrage] isEqualToString:@"1"]) {
imageName = @"comic_danmu_select";
} else {
imageName = @"comic_danmu";
}
barrageSwitch = [[TFButton alloc] initWithFrame:CGRectZero buttonTitle:TFLocalizedString(@"弹幕") buttonSubTitle:@"" buttonImageName:imageName buttonIndicator:TFButtonIndicatorTitleRight showMaskView:NO];
barrageSwitch.buttonTitleFont = kFont10;
barrageSwitch.buttonTitleColor = kWhiteColor;
barrageSwitch.graphicDistance = 2;
barrageSwitch.buttonImageScale = 0.5;
barrageSwitch.tag = 1;
barrageSwitch.backgroundColor = kBlackTransparentColor;
barrageSwitch.layer.cornerRadius = 10;
[barrageSwitch addTarget:self action:@selector(barrageSwitchClick:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:barrageSwitch];
CGFloat width = [TFViewHelper getDynamicWidthWithLabelFont:kFont10 labelHeight:22.0 labelText:TFLocalizedString(@"弹幕") maxWidth:SCREEN_WIDTH / 2.0];
[barrageSwitch mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(kHalfMargin);
make.top.mas_equalTo(self.mas_top).with.offset(PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height);
make.width.mas_equalTo(width + kLabelHeight);
make.height.mas_equalTo(22);
}];
#endif
settingBar = [[TFComicBrowseSetBar alloc] init];
scrollToTop = [UIButton buttonWithType:UIButtonTypeCustom];
scrollToTop.adjustsImageWhenHighlighted = NO;
[scrollToTop setImage:[UIImage imageNamed:TFLocalizedString(@"comic_top")] forState:UIControlStateNormal];
[scrollToTop addTarget:self action:@selector(scrollToTopClick) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:scrollToTop];
[scrollToTop mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.mas_right).with.offset(- kHalfMargin);
make.bottom.mas_equalTo(self.mas_top).with.offset(6 * MenuButtonHeight);
make.width.height.mas_equalTo(MenuButtonHeight);
}];
if (![[TFCollectionManager shareManagerWithProductionType:TFProductionTypeComic] isCollectedWithProduction_id:self.comicChapterModel.production_id]) {
collectionButton = [UIButton buttonWithType:UIButtonTypeCustom];
collectionButton.adjustsImageWhenHighlighted = NO;
[collectionButton setImage:[UIImage imageNamed:TFLocalizedString(@"comic_collection")] forState:UIControlStateNormal];
[collectionButton addTarget:self action:@selector(collectionButtonClick:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:collectionButton];
[collectionButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.mas_right).with.offset(- kHalfMargin);
make.bottom.mas_equalTo(scrollToTop.mas_top).with.offset(- kHalfMargin);
make.width.height.mas_equalTo(MenuButtonHeight);
}];
}
}
- (void)showMenuBottomBar
{
[UIView animateWithDuration:kAnimatedDurationFast animations:^{
#if TF_Comments_Mode
self.frame = CGRectMake(0, SCREEN_HEIGHT - (PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height), SCREEN_WIDTH, PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height);
#else
self.frame = CGRectMake(0, SCREEN_HEIGHT - (Comic_Menu_Bottom_Bar_Height - Comic_Menu_Bottom_Bar_Top_Height), SCREEN_WIDTH, Comic_Menu_Bottom_Bar_Height - Comic_Menu_Bottom_Bar_Top_Height);
#endif
}];
[barrageSwitch mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.mas_top).with.offset(- kHalfMargin - 20);
}];
[scrollToTop mas_updateConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.mas_top).with.offset(- kHalfMargin);
}];
}
- (void)reloadCollectionState
{
if (![[TFCollectionManager shareManagerWithProductionType:TFProductionTypeComic] isCollectedWithProduction_id:self.comicChapterModel.production_id]) {
collectionButton.hidden = NO;
} else {
collectionButton.hidden = YES;
}
}
- (void)hiddenMenuBottomBar
{
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
[UIView animateWithDuration:kAnimatedDurationFast animations:^{
#if TF_Comments_Mode
self.frame = CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height);
#else
self.frame = CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, Comic_Menu_Bottom_Bar_Height - Comic_Menu_Bottom_Bar_Top_Height);
#endif
}];
[barrageSwitch mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.mas_top).with.offset(PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height);
}];
[scrollToTop mas_updateConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.mas_top).with.offset(6 * MenuButtonHeight);
}];
}
- (void)startLoadingData
{
currentPageLabel.text = @"";
[indicatorView startAnimating];
previousButton.enabled = NO;
[previousButton setTintColor:kGrayTextLightColor];
nextButton.enabled = NO;
[nextButton setTintColor:kGrayTextLightColor];
}
- (void)stopLoadingData
{
currentPageLabel.text = TFLocalizedString(@"当前话");
[indicatorView stopAnimating];
previousButton.enabled = YES;
[previousButton setTintColor:kBlackColor];
nextButton.enabled = YES;
[nextButton setTintColor:kBlackColor];
}
#pragma mark - 点击事件
- (void)changeCommentsState:(UIButton *)sender
{
if (sender.tag == 0) { // 评论
[self changeComentInput:YES];
} else { // 吐槽
[self changeComentInput:NO];
}
}
// 改变评论输入框状态
- (void)changeComentInput:(BOOL)isComment {
#if TF_Comments_Mode
if (isComment) {
commentsTextView.placeholderText = TFLocalizedString(@"发一条评论吧");
[sendComments setTitle:TFLocalizedString(@"发送") forState:UIControlStateNormal];
isCommentState = YES;
_leftImageButton.tag = 1;
[_leftImageButton setImage:[UIImage imageNamed:TFLocalizedString(@"comic_comments_icon")] forState:UIControlStateNormal];
return;
}
if (!isComment) {
commentsTextView.placeholderText = TFLocalizedString(@"发一条弹幕吧");
[sendComments setTitle:TFLocalizedString(@"发射") forState:UIControlStateNormal];
isCommentState = NO;
_leftImageButton.tag = 0;
[_leftImageButton setImage:[UIImage imageNamed:TFLocalizedString(@"comic_barrage")] forState:UIControlStateNormal];
return;
}
#endif
}
- (void)previousButtonClick
{
if (self.comicChapterModel.last_chapter && self.comicChapterModel.last_chapter > 0) {
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_Switch_Chapter object:[TFUtilsHelper formatStringWithInteger:self.comicChapterModel.last_chapter]];
}
}
- (void)nextButtonClick
{
if (self.comicChapterModel.next_chapter && self.comicChapterModel.next_chapter > 0) {
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_Switch_Chapter object:[TFUtilsHelper formatStringWithInteger:self.comicChapterModel.next_chapter]];
}
}
- (void)settingButtonClick
{
[settingBar showSettingBar];
}
- (void)barrageSwitchClick:(UIButton *)sender
{
if (sender.tag == 0) {
sender.tag = 1;
barrageSwitch.buttonImageName = @"comic_danmu_select";
[[NSUserDefaults standardUserDefaults] setObject:@"1" forKey:Enable_Barrage];
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_Switch_Barrage object:@"1"];
[self changeComentInput:NO];
} else {
sender.tag = 0;
barrageSwitch.buttonImageName = @"comic_danmu";
[[NSUserDefaults standardUserDefaults] setObject:@"0" forKey:Enable_Barrage];
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_Switch_Barrage object:@"0"];
[self changeComentInput:YES];
}
[[NSUserDefaults standardUserDefaults] synchronize];
}
- (void)shareButtonClick:(UIButton *)sender
{
[TFShareManager shareWithProduction_id:NSStringFromInteger(self.comicChapterModel.production_id) chapter_id:NSStringFromInteger(self.comicChapterModel.chapter_id) type:TFShareTypeComic];
}
- (void)checkCommentsClick
{
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_Push_To_Comments object:nil];
}
- (void)scrollToTopClick
{
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_Reader_Scroll_To_Top object:nil];
}
- (void)downloadButtonClick
{
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_Push_To_Comic_Download object:nil];
}
- (void)collectionButtonClick:(UIButton *)sender
{
if ([[TFCollectionManager shareManagerWithProductionType:TFProductionTypeComic] isCollectedWithProduction_id:self.comicChapterModel.production_id]) {
return;
}
WS(weakSelf)
[TFUtilsHelper synchronizationRackProductionWithProduction_id:self.comicChapterModel.production_id productionType:TFProductionTypeComic complete:nil];
if ([[TFCollectionManager shareManagerWithProductionType:TFProductionTypeComic] addCollectionWithProductionModel:weakSelf.productionModel]) {
sender.hidden = YES;
[TFPromptManager showPromptViewWithStatus:TFPromptStatusSuccess promptTitle:TFLocalizedString(@"已加入书架")];
} else {
sender.hidden = NO;
[TFPromptManager showPromptViewWithStatus:TFPromptStatusError promptTitle:TFLocalizedString(@"加入书架失败")];
}
}
- (void)sendCommentsClick
{
#if TF_Comments_Mode
if (!TFUserInfoManager.isLogin) {
[TFLoginOptionsViewController presentLoginView:nil];
return;
}
if (commentsTextView.text.length < 1) {
return;
}
NSString *t_text = commentsTextView.text;
commentsTextView.text = @"";
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
WS(weakSelf)
if (!isCommentState) {
[TFNetworkTools POST:Comic_Send_Barrage parameters:@{@"comic_id":[TFUtilsHelper formatStringWithInteger:self.comicChapterModel.production_id], @"chapter_id":[TFUtilsHelper formatStringWithInteger:self.comicChapterModel.chapter_id], @"content":t_text} model:nil success:^(BOOL isSuccess, NSDictionary * _Nullable t_model, TFNetworkRequestModel * _Nonnull requestModel) {
SS(strongSelf)
if (isSuccess) {
[[NSNotificationCenter defaultCenter] postNotificationName:Notification_Change_Barrage object:t_text];
strongSelf->commentsTextView.text = @"";
strongSelf.frame = CGRectMake(0, SCREEN_HEIGHT - (PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height), SCREEN_WIDTH, PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height);
[TFPromptManager showPromptViewWithStatus:TFPromptStatusSuccess promptTitle:TFLocalizedString(@"发射成功")];
} else if (Compare_Json_isEqualTo(requestModel.code, 315)) {
strongSelf->commentsTextView.text = @"";
[TFPromptManager showPromptViewWithStatus:TFPromptStatusSuccess promptTitle:requestModel.msg];
} else if (requestModel.code == 319) {// 发送成功,但需要审核
strongSelf->commentsTextView.text = @"";
[TFPromptManager showPromptViewWithStatus:TFPromptStatusSuccess promptTitle:requestModel.msg];
} else {
strongSelf->commentsTextView.text = t_text;
[strongSelf->commentsTextView becomeFirstResponder];
[TFPromptManager showPromptViewWithStatus:TFPromptStatusError promptTitle:requestModel.msg];
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
SS(strongSelf)
strongSelf->commentsTextView.text = t_text;
}];
} else {
[TFNetworkTools POST:Comic_Comment_Post parameters:@{@"comic_id":[TFUtilsHelper formatStringWithInteger:self.comicChapterModel.production_id], @"content":t_text} model:nil success:^(BOOL isSuccess, NSDictionary * _Nullable t_model, TFNetworkRequestModel * _Nonnull requestModel) {
SS(strongSelf)
if (isSuccess) {
strongSelf->commentsTextView.text = @"";
[TFPromptManager showPromptViewWithStatus:TFPromptStatusSuccess promptTitle:TFLocalizedString(@"评论成功")];
[badgeView increment];
} else if (Compare_Json_isEqualTo(requestModel.code, 315)) {
strongSelf->commentsTextView.text = @"";
[TFPromptManager showPromptViewWithStatus:TFPromptStatusSuccess promptTitle:requestModel.msg];
} else if (requestModel.code == 318) {// 发送成功,但需要审核
strongSelf->commentsTextView.text = @"";
[TFPromptManager showPromptViewWithStatus:TFPromptStatusSuccess promptTitle:requestModel.msg];
} else {
strongSelf->commentsTextView.text = t_text;
[strongSelf->commentsTextView becomeFirstResponder];
[TFPromptManager showPromptViewWithStatus:TFPromptStatusError promptTitle:requestModel.msg];
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
SS(strongSelf)
strongSelf->commentsTextView.text = t_text;
}];
}
#endif
}
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView *view = [super hitTest:point withEvent:event];
if ([barrageSwitch pointInside:[barrageSwitch convertPoint:point fromView:self] withEvent:event]) {
return barrageSwitch;
}
if ([collectionButton pointInside:[collectionButton convertPoint:point fromView:self] withEvent:event]) {
return collectionButton;
}
if ([scrollToTop pointInside:[scrollToTop convertPoint:point fromView:self] withEvent:event]) {
return scrollToTop;
}
if ([view isKindOfClass:[self class]]) {
return nil;
}
return view;
}
//当键盘出现或改变时调用
- (void)keyboardWillShow:(NSNotification *)aNotification
{
//获取键盘的高度
NSDictionary *userInfo = [aNotification userInfo];
keyboardHeight = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
self.frame = CGRectMake(0, SCREEN_HEIGHT - (PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height) - keyboardHeight + PUB_NAVBAR_OFFSET, SCREEN_WIDTH, PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height);
}
//当键退出时调用
- (void)keyboardWillHide:(NSNotification *)aNotification
{
keyboardHeight = PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height;
self.frame = CGRectMake(0, SCREEN_HEIGHT - (PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height), SCREEN_WIDTH, PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height);
}
- (void)textViewDidChange:(YYTextView *)textView
{
CGFloat textViewHeight = [TFViewHelper getDynamicHeightWithLabelFont:textView.font labelWidth:textView.width labelText:textView.text maxHeight:70] - kMargin;
if (textViewHeight < 30) {
textViewHeight = 30;
}
#if TF_Comments_Mode
[sendComments mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(textViewHeight);
}];
#endif
if (is_iPhone6) {
self.frame = CGRectMake(0, SCREEN_HEIGHT - keyboardHeight - PUB_TABBAR_HEIGHT + PUB_TABBAR_OFFSET - textViewHeight, SCREEN_WIDTH, PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height);
} else {
if (![textView.text isEqualToString:@""]) {
self.frame = CGRectMake(0, SCREEN_HEIGHT - keyboardHeight - PUB_TABBAR_HEIGHT + PUB_TABBAR_OFFSET - textViewHeight - kMargin, SCREEN_WIDTH, PUB_TABBAR_HEIGHT + Comic_Menu_Bottom_Bar_Top_Height);
}
}
}
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"]) {
[self sendCommentsClick];
return NO;
}
return YES;
}
- (void)setComicChapterModel:(TFProductionChapterModel *)comicChapterModel
{
_comicChapterModel = comicChapterModel;
#if TF_Comments_Mode
[badgeView setCount:(int)comicChapterModel.total_comment];
[badgeView showCount];
#endif
if (comicChapterModel.next_chapter == 0) {
[nextButton setTintColor:kGrayTextLightColor];
nextButton.enabled = NO;
} else {
[nextButton setTintColor:kBlackColor];
nextButton.enabled = YES;
}
if (comicChapterModel.last_chapter == 0) {
[previousButton setTintColor:kGrayTextLightColor];
previousButton.enabled = NO;
} else {
[previousButton setTintColor:kBlackColor];
previousButton.enabled = YES;
}
}
@end