JCNoteNameViewController.swift 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. //
  2. // JCNoteNameViewController.swift
  3. // JChat
  4. //
  5. // Created by deng on 2017/5/15.
  6. // Copyright © 2017年 HXHG. All rights reserved.
  7. //
  8. import UIKit
  9. import JMessage
  10. class JCNoteNameViewController: UIViewController {
  11. var user: JMSGUser!
  12. override func viewDidLoad() {
  13. super.viewDidLoad()
  14. _init()
  15. noteName = user.noteName ?? ""
  16. noteNameTextField.text = noteName
  17. let count = 20 - noteName.characters.count
  18. tipLabel.text = "\(count)"
  19. noteNameTextField.becomeFirstResponder()
  20. }
  21. private var topOffset: CGFloat {
  22. if isIPhoneX {
  23. return 88
  24. }
  25. return 64
  26. }
  27. private lazy var navRightButton: UIBarButtonItem = UIBarButtonItem(title: "完成", style: .plain, target: self, action: #selector(_saveNickname))
  28. fileprivate lazy var noteNameTextField: UITextField = {
  29. let noteNameTextField = UITextField()
  30. noteNameTextField.backgroundColor = .white
  31. noteNameTextField.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 15, height: 0))
  32. noteNameTextField.rightView = UIView(frame: CGRect(x: 0, y: 0, width: 27, height: 0))
  33. noteNameTextField.leftViewMode = .always
  34. noteNameTextField.rightViewMode = .always
  35. noteNameTextField.addTarget(self, action: #selector(textFieldDidChanged(_ :)), for: .editingChanged)
  36. return noteNameTextField
  37. }()
  38. fileprivate lazy var tipLabel: UILabel = {
  39. let tipLabel = UILabel(frame: CGRect(x: self.view.width - 15 - 28, y: self.topOffset + 21, width: 28, height: 12))
  40. tipLabel.textColor = UIColor(netHex: 0x999999)
  41. tipLabel.font = UIFont.systemFont(ofSize: 12)
  42. tipLabel.textAlignment = .right
  43. return tipLabel
  44. }()
  45. private var noteName = ""
  46. //MARK: - private func
  47. private func _init() {
  48. self.title = "备注名"
  49. automaticallyAdjustsScrollViewInsets = false
  50. view.backgroundColor = UIColor(netHex: 0xe8edf3)
  51. _setupNavigation()
  52. view.addSubview(noteNameTextField)
  53. view.addSubview(tipLabel)
  54. view.addConstraint(_JCLayoutConstraintMake(noteNameTextField, .left, .equal, view, .left))
  55. view.addConstraint(_JCLayoutConstraintMake(noteNameTextField, .right, .equal, view, .right))
  56. view.addConstraint(_JCLayoutConstraintMake(noteNameTextField, .top, .equal, view, .top, self.topOffset))
  57. view.addConstraint(_JCLayoutConstraintMake(noteNameTextField, .height, .equal, nil, .notAnAttribute, 45))
  58. }
  59. private func _setupNavigation() {
  60. navigationItem.rightBarButtonItem = navRightButton
  61. }
  62. func textFieldDidChanged(_ textField: UITextField) {
  63. // markedTextRange指的是当前高亮选中的,除了长按选中,用户中文输入拼音过程往往也是高亮选中状态
  64. if textField.markedTextRange == nil {
  65. let text = textField.text!
  66. if text.count > 20 {
  67. let range = text.startIndex ..< text.index(text.startIndex, offsetBy: 20)
  68. let subText = text.substring(with: range)
  69. textField.text = subText
  70. }
  71. let count = 20 - (textField.text?.characters.count)!
  72. tipLabel.text = "\(count)"
  73. }
  74. }
  75. //MARK: - click func
  76. func _saveNickname() {
  77. noteNameTextField.resignFirstResponder()
  78. MBProgressHUD_JChat.showMessage(message: "修改中", toView: self.view)
  79. user.updateNoteName(noteNameTextField.text!) { (result, error) in
  80. MBProgressHUD_JChat.hide(forView: self.view, animated: true)
  81. if error == nil {
  82. NotificationCenter.default.post(name: Notification.Name(rawValue: kUpdateFriendInfo), object: nil)
  83. self.navigationController?.popViewController(animated: true)
  84. } else {
  85. MBProgressHUD_JChat.show(text: "修改失败", view: self.view)
  86. print("error:\(String(describing: error?.localizedDescription))")
  87. }
  88. }
  89. }
  90. }