PublishEditTitleCell.swift 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. //
  2. // PublishEditTitleCell.swift
  3. // RainbowPlanet
  4. //
  5. // Created by Christopher on 2019/6/17.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. import RxSwift
  10. class PublishEditTitleCell: UITableViewCell {
  11. let disposeBag = DisposeBag()
  12. typealias TopicTextClosure = (_ text: String) -> Void
  13. var topicTextClosure : TopicTextClosure?
  14. var titleStr: String? {
  15. didSet {
  16. editTextField.text = self.titleStr
  17. }
  18. }
  19. class func cellWith(tableView:UITableView,indexPath:IndexPath) -> PublishEditTitleCell {
  20. let ID = "PublishEditTitleCell"
  21. tableView.register(PublishEditTitleCell.self, forCellReuseIdentifier: ID)
  22. let cell : PublishEditTitleCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! PublishEditTitleCell
  23. cell.indexPath = indexPath
  24. return cell
  25. }
  26. override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  27. super.init(style: style, reuseIdentifier: reuseIdentifier)
  28. setupViews()
  29. setupLayouts()
  30. }
  31. required init?(coder aDecoder: NSCoder) {
  32. fatalError("init(coder:) has not been implemented")
  33. }
  34. var indexPath: IndexPath? {
  35. didSet {
  36. }
  37. }
  38. //MRAK: - 设置View
  39. private func setupViews() {
  40. self.selectionStyle = .none
  41. addSubview(editTextField)
  42. addSubview(h_lineLabel)
  43. }
  44. private func setupLayouts() {
  45. editTextField.snp.makeConstraints { (make) in
  46. make.top.equalToSuperview()
  47. make.bottom.equalToSuperview().offset(-1)
  48. make.left.equalTo(14)
  49. make.right.equalTo(-14)
  50. }
  51. h_lineLabel.snp.makeConstraints { (make) in
  52. make.left.equalTo(editTextField.snp.left)
  53. make.right.equalTo(editTextField.snp.right)
  54. make.top.equalTo(editTextField.snp.top)
  55. make.height.equalTo(0.5)
  56. }
  57. }
  58. private lazy var editTextField: UITextField = {
  59. let editTextField = UITextField()
  60. editTextField.textColor = k333333Color
  61. editTextField.font = kRegularFont14
  62. editTextField.tintColor = kEnabledButtonColor
  63. editTextField.clearButtonMode = .whileEditing
  64. editTextField.attributedPlaceholder = NSAttributedString.init(string:"标题好,能收获更多U米哦(标题最多20字)", attributes: [NSAttributedString.Key.font:kRegularFont14 as Any, NSAttributedString.Key.foregroundColor:kDDDDDDColor])
  65. editTextField.delegate = self
  66. return editTextField
  67. }()
  68. private lazy var h_lineLabel: UILabel = {
  69. let h_lineLabel = UILabel()
  70. h_lineLabel.backgroundColor = kf5f5f5Color
  71. return h_lineLabel
  72. }()
  73. }
  74. extension PublishEditTitleCell: UITextFieldDelegate {
  75. func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
  76. if textField == editTextField {
  77. textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: UIControl.Event.editingChanged)
  78. }
  79. return true
  80. }
  81. @objc func textFieldDidChange(_ textField: UITextField) {
  82. var fullStr = textField.text ?? ""
  83. if textField.text?.count ?? 0 > 40 {
  84. fullStr = String(fullStr.prefix(20)) as String
  85. textField.text = fullStr
  86. }
  87. if let topicTextClosure = self.topicTextClosure {
  88. topicTextClosure(self.editTextField.text ?? "")
  89. }
  90. }
  91. }