// // SBTUpateDeviceNameVCtr.swift // SolarBT // // Created by weclouds on 2019/5/8. // Copyright © 2019 weclouds. All rights reserved. // import UIKit import SwiftPopup import PKHUD let KNotificationUpadateNameChange = "KNotificationUpadateNameChange" class SBTUpateDeviceNameVCtr: SwiftPopup,UITextFieldDelegate { var updateCallback:((String)->Void)? var deviceName :String? var isDemo :Bool? @IBOutlet weak var box: UIView! @IBOutlet weak var saveBtn: UIButton! @IBOutlet weak var textBox: UIView! @IBOutlet weak var backLabel: UILabel! @IBOutlet weak var devicenameTextfield: UITextField! @IBOutlet weak var DeviceNameLabel: UILabel! @IBOutlet weak var placeHolder: UILabel! override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) BabyBluetoothSwift.shareInstance()?.updateNameBlock = {[weak self](deviceData) in let a = deviceData?.value(forKey: ReceiveData) as! String let str0 = a.subString(start: 0, length: 6) log.debug("更新名称 --- 返回的数据 -- \(a)") if str0.subString(start: 1, length: 4) == "ff03" { let dataTagValue : String = deviceData?.value(forKey: DataTag) as! String if dataTagValue == "FF0300490020"{ let str0 = a.replacingOccurrences(of: " ", with: "") log.debug("处理真实数据 - \(str0)") var productName : String = "" var num5 = UUUtils.string(fromHexString: str0.subString(start: 7 , length: 64)) log.debug("要解析的十六进制 \( str0.subString(start: 7 , length: 64))") num5 = num5?.trimmingCharacters(in: .whitespaces) //过滤开头结尾空白 log.debug("设备名称 \(num5)") //f16d33 575578 e565b 065fd8 0906ed179 if num5 == nil || num5 == "" { let ChineseString = UUUtils.deUnicodeString(fromHexString: str0.subString(start: 7 , length: 64)) log.debug("设备中文名称 \(ChineseString!)") productName = ChineseString! }else{ productName = "\(num5!)" } let dict = ["productName":productName] NotificationCenter.default.post(name: NSNotification.Name(KNotificationUpadateNameChange), object: nil, userInfo: dict) }} } } override func viewDidLoad() { super.viewDidLoad() self.devicenameTextfield.text = self.deviceName ?? "" // Do any additional setup after loading the view. createUI() } @IBAction func saveAction(_ sender: Any) { let devicename = self.devicenameTextfield.text if self.isDemo == true { g_showHUD("Current_demo_data".da_localizedStr()) self.dismiss() return } if devicename == ""{ // self.view.makeToast("清输入设备名称") g_toast("Please_enter_a_device_name".da_localizedStr()) return; } //6e 6a 67 74 6d 78 00 00 00 00 00 00 00 00 00 00 16 * 4 //处理数据 var hexStr = UUUtils.hexString(from: devicename) if devicename?.isIncludeChinese() == true{ // 包含汉字 hexStr = UUUtils.utf8(toUnicode: devicename!) //字母/数字 32ge个 // g_toast("不能输入超过16个汉字") if hexStr!.count < 64 { //补空格 let completion = 64 - hexStr!.count let blankCont = completion for _ in 0.. Bool { let userNameRegex = "^[A-Za-z0-9]{6,16}+$" let userNamePredicate = NSPredicate(format: "SELF MATCHES %@", userNameRegex) let inputString = userNamePredicate.evaluate(with: name) return inputString } override func touchesBegan(_ touches: Set, with event: UIEvent?) { // dismiss() } } extension SBTUpateDeviceNameVCtr{ func readdata_0049(_ reciveData : String){ let str0 = reciveData log.debug("处理真实数据 - \(str0)") var productName : String = "" var num5 = UUUtils.string(fromHexString: str0.subString(start: 7 , length: str0.count - 12)) log.debug("要解析的十六进制 \( str0.subString(start: 7 , length: str0.count - 12))") num5 = num5?.trimmingCharacters(in: .whitespaces) //过滤开头结尾空白 log.debug("设备名称 \(num5)") //f16d33 575578 e565b 065fd8 0906ed179 if num5 == nil || num5 == "" { let ChineseString = UUUtils.deUnicodeString(fromHexString: str0.subString(start: 7 , length: str0.count - 12)) log.debug("设备中文名称 \(ChineseString!)") productName = ChineseString! }else{ productName = "\(num5!)" } let dict = ["productName":productName] NotificationCenter.default.post(name: NSNotification.Name(KNotificationUpadateNameChange), object: nil, userInfo: dict) } func createUI() { DeviceNameLabel.text = "Device_name".da_localizedStr() placeHolder.text = "Please_enter_a_device_name".da_localizedStr() backLabel.text = "Back".da_localizedStr() saveBtn.setTitle("Save".da_localizedStr(), for: .normal) self.textBox.layer.masksToBounds = true self.textBox.layer.cornerRadius = 5 self.textBox.layer.borderColor = UIColor(hexString: "#C6C6C6")?.cgColor self.textBox.layer.borderWidth = 1 devicenameTextfield.clearButtonMode = .always devicenameTextfield.delegate = self; self.box.layer.masksToBounds = true self.box.layer.cornerRadius = 5 self.saveBtn.layer.masksToBounds = true self.saveBtn.layer.cornerRadius = 20 let bgLayer1 = CAGradientLayer() bgLayer1.colors = [UIColor(red: 1, green: 0.52, blue: 0.07, alpha: 1).cgColor, UIColor(red: 1, green: 0.67, blue: 0, alpha: 1).cgColor] bgLayer1.locations = [0, 1] bgLayer1.frame = self.saveBtn.bounds bgLayer1.startPoint = CGPoint(x: 1, y: 1) bgLayer1.endPoint = CGPoint(x: 0, y: 0) self.saveBtn.layer.addSublayer(bgLayer1) self.backLabel.isUserInteractionEnabled = true let tap = UITapGestureRecognizer(target: self, action: #selector(tapAction)) self.backLabel.addGestureRecognizer(tap) } @objc func tapAction() { dismiss() } func textFieldDidEndEditing(_ textField: UITextField) { } func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { if let text = textField.text, let textRange = Range(range, in: text) { let updatedText = text.replacingCharacters(in: textRange, with: string) log.debug("更新的输入 ---\(updatedText)") if updatedText.count > 32{ g_toast("The_maximum_length_of_the_name_is_16_words.".da_localizedStr()) return false } } return true } }