| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- //
- // KeyboardHelpView.swift
- // AiKeyboard
- //
- // Created by Destiny on 2025/4/23.
- //
- import UIKit
- protocol KeyboardHelpViewDelegate: NSObjectProtocol {
-
- func helpCollectionViewDidSelectItem(characterId: String, content: String, complete: @escaping ((Bool) -> ()))
-
- func addCharacterJump()
- }
- class KeyboardHelpView: KeyboardBaseView {
-
- struct UX {
- static let cellWidth = (KeyboardConst.kb_kScreenW - 96.0) / 3.0
- static let cellHeight = 46.0
- }
-
- weak var helpDelegate: KeyboardHelpViewDelegate?
-
- var characterList: [CharacterModel]? {
- didSet {
- self.collectionView.reloadData()
- }
- }
-
- lazy var collectionView: UICollectionView = {
-
- let layout = UICollectionViewFlowLayout()
- layout.minimumLineSpacing = 0
- layout.scrollDirection = .vertical
-
- let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
- collectionView.backgroundColor = .clear
-
- collectionView.dataSource = self
- collectionView.delegate = self
-
- collectionView.showsVerticalScrollIndicator = false
- collectionView.bounces = false
-
- collectionView.register(KeyboardCharacterCell.self, forCellWithReuseIdentifier: KeyboardCharacterCell.reuseIdentifier())
-
- return collectionView
- }()
-
- override init(frame: CGRect) {
- super.init(frame: frame)
- initUI()
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- }
- extension KeyboardHelpView: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
-
- func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
- return (self.characterList?.count ?? 0) + 1
- }
-
- func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
-
- if indexPath.row == self.characterList?.count {
-
- let cell = collectionView.dequeueReusableCell(withReuseIdentifier: KeyboardCharacterCell.reuseIdentifier(), for: indexPath) as! KeyboardCharacterCell
- cell.titleLabel.isHidden = true
- cell.addBtn.isHidden = false
- return cell
- } else {
-
- let cell = collectionView.dequeueReusableCell(withReuseIdentifier: KeyboardCharacterCell.reuseIdentifier(), for: indexPath) as! KeyboardCharacterCell
- cell.titleLabel.isHidden = false
- cell.addBtn.isHidden = true
- if let model = self.characterList?[indexPath.row] {
- cell.config(model: model)
- }
- return cell
- }
- }
-
- func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
-
- if indexPath.row == self.characterList?.count {
-
- helpDelegate?.addCharacterJump()
- } else {
-
- if self.dialogueLabel.text?.count == 0 {
- self.toast(text: "请先粘贴文字")
- return
- }
-
- let cell = collectionView.cellForItem(at: indexPath) as! KeyboardCharacterCell
- cell.setAnimate(play: true)
- if let model = self.characterList?[indexPath.row], let characterId = model.id {
- helpDelegate?.helpCollectionViewDidSelectItem(characterId: characterId, content: self.dialogueLabel.text ?? "") { isSuccess in
- cell.setAnimate(play: false)
- if isSuccess {
- self.dialogueClearBtnAction()
- }
- }
- }
- }
- }
-
- func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
-
- return CGSize(width: UX.cellWidth, height: UX.cellHeight)
- }
-
- func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
- return 6
- }
-
- func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
- return 6
- }
-
- func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize {
- return CGSize(width: KeyboardConst.kb_kScreenW, height: 6)
- }
- }
- extension KeyboardHelpView {
-
- func initUI() {
-
- self.addSubview(self.collectionView)
- collectionView.snp.makeConstraints { make in
- make.left.equalTo(10)
- make.right.equalTo(deleteBtn.snp.left).offset(-6)
- make.top.equalTo(dialogueView.snp.bottom).offset(6)
- make.bottom.equalTo(0)
- }
- }
- }
|