EditExpressAddressTableViewCell.swift 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. //
  2. // EditExpressAddressTableViewCell.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/4/30.
  6. // Copyright © 2019 南鑫林. All rights reserved.
  7. //
  8. import UIKit
  9. import RxSwift
  10. import RxCocoa
  11. import IQKeyboardManagerSwift
  12. class EditExpressAddressTableViewCell: UITableViewCell {
  13. let disposeBag = DisposeBag()
  14. typealias EditTextViewClosure = (_ text: String,_ indexPath:IndexPath) -> Void
  15. var editTextViewClosure : EditTextViewClosure?
  16. class func cellWith(tableView:UITableView,indexPath:IndexPath) -> EditExpressAddressTableViewCell {
  17. let ID = "EditExpressAddressTableViewCell"
  18. tableView.register(EditExpressAddressTableViewCell.self, forCellReuseIdentifier: ID)
  19. let cell : EditExpressAddressTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! EditExpressAddressTableViewCell
  20. cell.indexPath = indexPath
  21. return cell
  22. }
  23. override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  24. super.init(style: style, reuseIdentifier: reuseIdentifier)
  25. setupViews()
  26. setupLayouts()
  27. }
  28. required init?(coder aDecoder: NSCoder) {
  29. fatalError("init(coder:) has not been implemented")
  30. }
  31. var indexPath: IndexPath? {
  32. didSet {
  33. }
  34. }
  35. //MRAK: - 设置View
  36. private func setupViews() {
  37. selectionStyle = .none
  38. addSubview(titleLabel)
  39. addSubview(editTextView)
  40. addSubview(h_lineLabel)
  41. }
  42. private func setupLayouts() {
  43. titleLabel.snp.remakeConstraints { (make) in
  44. make.left.equalTo(14)
  45. make.top.equalToSuperview().offset(15)
  46. }
  47. editTextView.snp.remakeConstraints { (make) in
  48. make.top.equalToSuperview().offset(15)
  49. make.height.greaterThanOrEqualTo(48).priority(888)
  50. make.bottom.equalToSuperview().offset(-15).priority(777)
  51. make.left.equalTo(94)
  52. make.right.equalTo(-14)
  53. }
  54. h_lineLabel.snp.makeConstraints { (make) in
  55. make.left.equalTo(14)
  56. make.right.bottom.equalToSuperview()
  57. make.height.equalTo(0.5)
  58. }
  59. }
  60. private lazy var titleLabel: UILabel = {
  61. let titleLabel = UILabel()
  62. titleLabel.textColor = k333333Color
  63. titleLabel.font = kRegularFont16
  64. return titleLabel
  65. }()
  66. private lazy var editTextView: IQTextView = {
  67. let editTextView = IQTextView()
  68. editTextView.textColor = k333333Color
  69. editTextView.font = kRegularFont16
  70. editTextView.tintColor = kEnabledButtonColor
  71. editTextView.isScrollEnabled = false
  72. editTextView.textContainer.lineFragmentPadding = 0
  73. editTextView.textContainerInset = .zero
  74. editTextView.delegate = self
  75. return editTextView
  76. }()
  77. private lazy var h_lineLabel: UILabel = {
  78. let h_lineLabel = UILabel()
  79. h_lineLabel.backgroundColor = kf5f5f5Color
  80. return h_lineLabel
  81. }()
  82. var titles : [String]? {
  83. didSet {
  84. titleLabel.text = titles![(indexPath?.row)!]
  85. }
  86. }
  87. var placeholderTitles : [String]? {
  88. didSet {
  89. editTextView.placeholder = placeholderTitles![(indexPath?.row)!]
  90. }
  91. }
  92. var expressAddresModel: ExpressAddresModel? {
  93. didSet {
  94. switch indexPath?.row {
  95. case 3:
  96. editTextView.text = expressAddresModel?.address
  97. break
  98. default:
  99. break
  100. }
  101. }
  102. }
  103. }
  104. extension EditExpressAddressTableViewCell: UITextViewDelegate {
  105. func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
  106. if textView == editTextView {
  107. var fullStr = textView.text ?? ""
  108. if textView.text?.count ?? 0 > 180 {
  109. fullStr = String(fullStr.prefix(150)) as String
  110. textView.text = fullStr
  111. }
  112. if let editTextViewClosure = self.editTextViewClosure {
  113. editTextViewClosure(self.editTextView.text ?? "",(self.indexPath!))
  114. }
  115. }
  116. return true
  117. }
  118. }