LoginViewController.swift
6.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
//
// LoginViewController.swift
// ParentAssistant
//
// Created by 葛建军 on 2018/3/12.
// Copyright © 2018年 HANGZHOUTEAM. All rights reserved.
//
import UIKit
//登录
class LoginViewController: UIViewController,UITextFieldDelegate {
@IBOutlet var topView: NSLayoutConstraint!
@IBOutlet var iconImageView: UIImageView!//系统头像
@IBOutlet var phoneTextField: UITextField!//电话号码
@IBOutlet var passwordTextField: UITextField!//密码
@IBOutlet var passwordHiddenBtn: UIButton!//查看密码按钮
@IBOutlet var loginBtn: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
layoutSubViews()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.isHidden = false
}
// MARK: - 设置控件属性
func layoutSubViews(){
self.navigationController?.navigationBar.isHidden = false
self.navigationItem.title = "登录"
topView.constant = (getScreenHeight()-325)/3
passwordHiddenBtn.setImage(UIImage(named: "my_password_look"), for: UIControlState.selected)
NotificationCenter.default.addObserver(self, selector: #selector(LoginViewController.keyboardWIllChange(_:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(LoginViewController.getPhoneNumber(_:)), name: NSNotification.Name(rawValue: MyPhoneNumberNotification.getPhoneNumber), object: nil)
}
// MARK: - 根据键盘调整高度
@objc func keyboardWIllChange(_ noti: Notification){
let userInfo:NSDictionary=noti.userInfo! as NSDictionary
let endFrame=(userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
if endFrame?.origin.y == getScreenHeight() {
topView.constant = (getScreenHeight()-325)/3
}else{
topView.constant = (endFrame?.origin.y)!-375
}
}
@objc func getPhoneNumber(_ noti: Notification){
let userInfo:NSDictionary=noti.userInfo! as NSDictionary
phoneTextField.text = userInfo["phoneNumber"] as? String
}
// MARK: - 密码显示与否
@IBAction func passwordHiddenAction(_ sender: UIButton) {
let selected = passwordHiddenBtn.isSelected
passwordHiddenBtn.isSelected = !selected
passwordTextField.isSecureTextEntry = selected
}
// MARK: - 设置键盘消失
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
// MARK: - UITextFieldDelegate
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.view.endEditing(true)
return true
}
func textFieldDidEndEditing(_ textField: UITextField) {
if textField==passwordTextField && phoneTextField.text! != "" && passwordTextField.text! != ""{
loginBtn.isUserInteractionEnabled = true
loginBtn.backgroundColor = UIColorFromRGB(0xC5DAFF)
}else{
loginBtn.isUserInteractionEnabled = false
loginBtn.backgroundColor = UIColor.lightGray
}
}
func isMobilePhoneNumber(_ mobile:String)->Bool {
let str="^1[0-9]{10}"
return NSPredicate(format: "SELF MATCHES %@", str).evaluate(with: mobile)
}
// MARK: - 登录按钮
@IBAction func loginAction(_ sender: UIButton) {
self.view.endEditing(true)
SVProgressHUD.show(withStatus: "登录中...")
HTTPServer.shared.login(completionHandler: { (str, error) in
SVProgressHUD.dismiss()
let json=JSON.fromString(str)
if let ret=json{
let er=ret["error"].string
if let errorStr=er{
let Strings=errorStr.components(separatedBy: ":")
if Strings.count >= 2 {
switch Strings[1] {
//用户关联多个身份,请使用学事号登录:100
case "101"://用户认证身份不存在:101
appDelegate.window!.makeToast("用户认证身份不存在,请进行账号激活。")
break
//用户帐号或密码错误:102
case "103":// 用户不存在:103
appDelegate.window!.makeToast("该号码不存在,请联系客服400-826-2468")
break
default:
appDelegate.window!.makeToast(errorStr)
break
}
}else{
appDelegate.window!.makeToast(errorStr)
}
}else if ret["access_token"].stringValue != ""{
AccountManager.shared.setTokenInfo(tokenInfo: ret)
AccountManager.shared.saveToken(tokenInfo: ret)
AccountManager.shared.refreshUserInfo(self.phoneTextField.text!, completionHandler: { (finish) in
if finish{
self.loadUserInfo()
}else{
appDelegate.window!.makeToast("身份获取失败")
SVProgressHUD.dismiss()
}
})
}else{
SVProgressHUD.dismiss()
appDelegate.window!.makeToast("登录失败,请稍后重试")
}
}else{
SVProgressHUD.dismiss()
appDelegate.window!.makeToast("登录失败")
}
}, phone: phoneTextField.text!, password: passwordTextField.text!)
}
func loadUserInfo(){
let ID=AccountManager.shared.rawUserInfo!.contentData()["userid"].stringValue
YXMessageManager.share.loginWithYX(account: ID, token: ID.md5()) { (success) in
SVProgressHUD.dismiss()
if !success {
AccountManager.shared.logOut()
appDelegate.window!.makeToast("聊天服务登录失败,请连接网络重试")
}else{
//云信登录成功
self.navigationController?.popToRootViewController(animated: true)
}
}
}
// MARK: - 注册页面跳转
@IBAction func registerAction(_ sender: UIButton) {
let vc = Story.instantiateViewControllerWithIdentifier("RegisterViewController", storyName: "My") as! RegisterViewController
self.navigationController?.pushViewController(vc, animated: true)
}
// MARK: - 找回密码
@IBAction func getPasswordAction(_ sender: UIButton) {
let vc = Story.instantiateViewControllerWithIdentifier("GetBackPasswordViewController", storyName: "My") as! GetBackPasswordViewController
self.navigationController?.pushViewController(vc, animated: true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}