几个关键点: 1.为什么用
UITextFIEld.leftVIEw
? 避免了长按会出现放大镜(虽然可以重写UITextFIEld的方法,禁止复制、粘贴、选择的功能,但是不能避免移动光标的位置。)如果光标的位置移动,则输入的位置可能会发生变化,添加删除的黑点就会错乱。 2.为什么进入页面直接显示键盘? 在 vIEwWillAppear 的时候`self.textFIEld.becomeFirstResponder()
,因为点击leftVIEw上是不会d出键盘的。 3.如何添加和删除黑点? 这里需要定义一个全局的数组,添加和删除UIVIEw。 代码如下: func showVIEwOne() { vIEwOne = UIVIEw.init(frame: CGRect.init(x: 0,y: 0,wIDth: SCREEN_WIDTH,height: SCREEN_HEIGHT)) vIEwOne.backgroundcolor = bgcolor self.vIEw.addSubvIEw(vIEwOne) let tipLabel = UILabel.init(frame: CGRect.init(x: 20,y: SCREEN_HEIGHT/3-50,wIDth: SCREEN_WIDTH-40,height: 40)) tipLabel.text = "设置提现密码" tipLabel.textcolor = UIcolor.black tipLabel.textAlignment = NSTextAlignment.center tipLabel.Font = UIFont.init(name: Font,size: 16) vIEwOne.addSubvIEw(tipLabel) passworldTF = UITextFIEld.init(frame: CGRect.init(x: 20,y: tipLabel.bottom()+10,height: 40)) if (SCREEN_WIDTH > 320) { passworldTF.frame = CGRect.init(x: 30,wIDth: SCREEN_WIDTH-60,height: 50) } passworldTF.backgroundcolor = UIcolor.white passworldTF.layer.borderWIDth = 1 passworldTF.layer.bordercolor = linecolor.cgcolor passworldTF.keyboardType = UIKeyboardType.numberPad passworldTF.tintcolor = UIcolor.clear passworldTF.textcolor = UIcolor.clear passworldTF.delegate = self passworldTF.leftVIEw = UIVIEw.init(frame: CGRect.init(x: 0,wIDth: passworldTF.wIDth(),height: passworldTF.height())) passworldTF.leftviewmode = UITextFIEldviewmode.always vIEwOne.addSubvIEw(passworldTF) let linespaceWIDth = passworldTF.wIDth() / 6 //5条竖线 var i = 1 for _ in 1...5 { let xline = CGfloat(i)*linespaceWIDth let lineVIEw = UIVIEw.init(frame: CGRect.init(x: xline,wIDth: 0.5,height: passworldTF.height())) lineVIEw.backgroundcolor = linecolor passworldTF.addSubvIEw(lineVIEw) i = i + 1 } } func textFIEld(_ textFIEld: UITextFIEld,shouldChangeCharactersIn range: NSRange,replacementString string: String) -> Bool { if (textFIEld == self.passworldTF) { if (range.location >= 6) { return false } else { if (range.length == 0) { //文本输入状态 let pointX = ((passworldTF.wIDth()-62.5) / 12) * CGfloat(range.location * 2 + 1) + CGfloat(range.location) * 10.5 let pointY = (passworldTF.height()-10) / 2 //显示黑点 let blackPoint = UIVIEw.init(frame: CGRect.init(x: pointX,y: pointY,wIDth: 10.0,height: 10.0)) blackPoint.layer.cornerRadius = 5 blackPoint.backgroundcolor = UIcolor.black passworldTF.addSubvIEw(blackPoint) pointVIEwArr.append(blackPoint) } else { //文本删除状态 //移除黑点 pointVIEwArr[range.location].removeFromSupervIEw() pointVIEwArr.remove(at: range.location) } if string == "" { let word = self.password.substring(with: NSMakeRange(0,range.location)) self.password = word as Nsstring } else { self.password = self.password.appending(string) as Nsstring } print(self.password) return true } } return true }总结
以上是内存溢出为你收集整理的仿微信--提现密码设置页 swift全部内容,希望文章能够帮你解决仿微信--提现密码设置页 swift所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)