JCNicknameViewController.swift 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. //
  2. // JCNicknameViewController.swift
  3. // JChat
  4. //
  5. // Created by deng on 2017/3/29.
  6. // Copyright © 2017年 HXHG. All rights reserved.
  7. //
  8. import UIKit
  9. import JMessage
  10. class JCNicknameViewController: UIViewController {
  11. var nickName = ""
  12. override func viewDidLoad() {
  13. super.viewDidLoad()
  14. _init()
  15. nicknameTextField.text = nickName
  16. var count = 20 - nickName.count
  17. count = count < 0 ? 0 : count
  18. tipLabel.text = "\(count)"
  19. nicknameTextField.becomeFirstResponder()
  20. }
  21. private var topOffset: CGFloat {
  22. if isIPhoneX {
  23. return 88
  24. }
  25. return 64
  26. }
  27. fileprivate lazy var nicknameTextField: UITextField = {
  28. let nicknameTextField = UITextField(frame: CGRect(x: 0, y: self.topOffset, width: self.view.width, height: 45))
  29. nicknameTextField.backgroundColor = .white
  30. nicknameTextField.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 15, height: 0))
  31. nicknameTextField.rightView = UIView(frame: CGRect(x: 0, y: 0, width: 27, height: 0))
  32. nicknameTextField.leftViewMode = .always
  33. nicknameTextField.rightViewMode = .always
  34. nicknameTextField.addTarget(self, action: #selector(textFieldDidChanged(_ :)), for: .editingChanged)
  35. return nicknameTextField
  36. }()
  37. fileprivate lazy var tipLabel: UILabel = {
  38. let tipLabel = UILabel(frame: CGRect(x: self.view.width - 15 - 28, y: self.topOffset + 21, width: 28, height: 12))
  39. tipLabel.text = "20"
  40. tipLabel.textColor = UIColor(netHex: 0x999999)
  41. tipLabel.font = UIFont.systemFont(ofSize: 12)
  42. tipLabel.textAlignment = .right
  43. return tipLabel
  44. }()
  45. private lazy var navRightButton: UIBarButtonItem = UIBarButtonItem(title: "保存", style: .plain, target: self, action: #selector(_saveNickname))
  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(nicknameTextField)
  53. view.addSubview(tipLabel)
  54. }
  55. private func _setupNavigation() {
  56. navigationItem.rightBarButtonItem = navRightButton
  57. }
  58. @objc func textFieldDidChanged(_ textField: UITextField) {
  59. // markedTextRange指的是当前高亮选中的,除了长按选中,用户中文输入拼音过程往往也是高亮选中状态
  60. if textField.markedTextRange == nil {
  61. let text = textField.text!
  62. if text.count > 20 {
  63. let range = text.startIndex ..< text.index(text.startIndex, offsetBy: 20)
  64. let subText = text.substring(with: range)
  65. textField.text = subText
  66. }
  67. let count = 20 - (textField.text?.count)!
  68. tipLabel.text = "\(count)"
  69. }
  70. }
  71. //MARK: - click func
  72. @objc func _saveNickname() {
  73. nicknameTextField.resignFirstResponder()
  74. let nickname = nicknameTextField.text!
  75. JMSGUser.updateMyInfo(withParameter: nickname, userFieldType: .fieldsNickname) { (resultObject, error) -> Void in
  76. if error == nil {
  77. NotificationCenter.default.post(name: Notification.Name(rawValue: kUpdateUserInfo), object: nil)
  78. self.navigationController?.popViewController(animated: true)
  79. } else {
  80. print("error:\(String(describing: error?.localizedDescription))")
  81. }
  82. }
  83. }
  84. }