Files
keyboard/keyBoard/Class/Me/VC/KBFeedBackVC.m
2025-11-25 15:36:16 +08:00

165 lines
5.7 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#import "KBFeedBackVC.h"
#import <Masonry/Masonry.h>
@interface KBFeedBackVC () <UITextViewDelegate>
/// 输入卡片容器视图
@property (nonatomic, strong) UIView *inputCardView;
/// 文本输入框
@property (nonatomic, strong) UITextView *textView;
/// 占位提示标签“Please Enter The Content”
@property (nonatomic, strong) UILabel *placeholderLabel;
/// 右下角字数统计 “0/100”
@property (nonatomic, strong) UILabel *countLabel;
/// 底部提交按钮
@property (nonatomic, strong) UIButton *commitButton;
/// 最大输入字数
@property (nonatomic, assign) NSInteger maxCount;
@end
@implementation KBFeedBackVC
- (void)viewDidLoad {
[super viewDidLoad];
// 背景色与其他设置页一致
self.view.backgroundColor = [UIColor colorWithWhite:0.97 alpha:1.0];
self.kb_titleLabel.text = KBLocalized(@"Feedback");
self.maxCount = 100;
// 添加子视图
[self.view addSubview:self.inputCardView];
[self.inputCardView addSubview:self.textView];
[self.inputCardView addSubview:self.placeholderLabel];
[self.inputCardView addSubview:self.countLabel];
[self.view addSubview:self.commitButton];
// 输入卡片布局
[self.inputCardView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.view).offset(KB_NAV_TOTAL_HEIGHT + 16);
make.left.equalTo(self.view).offset(16);
make.right.equalTo(self.view).offset(-16);
make.height.mas_equalTo(220);
}];
// 文本输入框布局
[self.textView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.inputCardView).offset(16);
make.left.equalTo(self.inputCardView).offset(16);
make.right.equalTo(self.inputCardView).offset(-16);
make.bottom.equalTo(self.inputCardView).offset(-32);
}];
// 占位文字布局(叠在 textView 左上)
[self.placeholderLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.textView).offset(2);
make.left.equalTo(self.textView).offset(4);
}];
// 字数统计布局(卡片右下角)
[self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.inputCardView).offset(-16);
make.bottom.equalTo(self.inputCardView).offset(-10);
}];
// 底部提交按钮布局
[self.commitButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view).offset(24);
make.right.equalTo(self.view).offset(-24);
make.bottom.equalTo(self.view).offset(-KB_SAFE_BOTTOM - 24);
make.height.mas_equalTo(56);
}];
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[self.view endEditing:true];
}
#pragma mark - Actions
/// 提交按钮点击(后续在此方法内实现具体提交逻辑)
- (void)onTapCommit {
NSString *content = self.textView.text ?: @"";
// TODO: 在这里处理提交逻辑,例如校验 + 上报接口等
}
#pragma mark - UITextViewDelegate
// 文本变化时更新占位和字数
- (void)textViewDidChange:(UITextView *)textView {
// 超出最大字数时截断
if (textView.text.length > self.maxCount) {
textView.text = [textView.text substringToIndex:self.maxCount];
}
self.placeholderLabel.hidden = textView.text.length > 0;
self.countLabel.text = [NSString stringWithFormat:@"%ld/%ld",
(long)textView.text.length,
(long)self.maxCount];
}
#pragma mark - Lazy Load
- (UIView *)inputCardView {
if (!_inputCardView) {
_inputCardView = [UIView new];
_inputCardView.backgroundColor = [UIColor whiteColor];
_inputCardView.layer.cornerRadius = 16.0;
_inputCardView.layer.masksToBounds = YES;
}
return _inputCardView;
}
- (UITextView *)textView {
if (!_textView) {
_textView = [[UITextView alloc] init];
_textView.delegate = self;
_textView.backgroundColor = [UIColor clearColor];
_textView.font = [KBFont medium:14];
_textView.textColor = [UIColor blackColor];
_textView.textContainerInset = UIEdgeInsetsZero;
_textView.textContainer.lineFragmentPadding = 0;
_textView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
}
return _textView;
}
- (UILabel *)placeholderLabel {
if (!_placeholderLabel) {
_placeholderLabel = [UILabel new];
_placeholderLabel.textColor = [UIColor colorWithWhite:0.75 alpha:1.0];
_placeholderLabel.font = [KBFont medium:14];
_placeholderLabel.text = KBLocalized(@"Please Enter The Content");
}
return _placeholderLabel;
}
- (UILabel *)countLabel {
if (!_countLabel) {
_countLabel = [UILabel new];
_countLabel.textColor = [UIColor colorWithHex:0xACACAC];
_countLabel.font = [KBFont regular:13];
_countLabel.textAlignment = NSTextAlignmentRight;
_countLabel.text = @"0/100";
}
return _countLabel;
}
- (UIButton *)commitButton {
if (!_commitButton) {
_commitButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_commitButton setTitle:KBLocalized(@"Commit") forState:UIControlStateNormal];
[_commitButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_commitButton.titleLabel.font = [KBFont medium:16];
// 使用与修改昵称弹窗相近的主色
_commitButton.backgroundColor = [UIColor colorWithRed:0.02 green:0.75 blue:0.67 alpha:1.0];
_commitButton.layer.cornerRadius = 28.0;
_commitButton.layer.masksToBounds = YES; // 胶囊按钮
[_commitButton addTarget:self action:@selector(onTapCommit) forControlEvents:UIControlEventTouchUpInside];
}
return _commitButton;
}
@end