当用户以编程方式单击swift ios中的删除按钮时,如何将光标从一个文本字段自动移动到另一个文本字段?
Posted
技术标签:
【中文标题】当用户以编程方式单击swift ios中的删除按钮时,如何将光标从一个文本字段自动移动到另一个文本字段?【英文标题】:How to move cursor from one text field to another automatically when the user clicks the Delete Button in swift ios programmatically? 【发布时间】:2018-04-19 21:58:48 【问题描述】:目前,我有 6 个textfields
,一旦用户单击键盘上的数字,我就会从一个textfield
移动到下一个。
我要解决的问题是:如果用户点击Delete Button
返回重新输入不同的号码,我如何在程序中编码?
如何让用户返回在键盘上输入新数字并将textfield
更改回其原始代码?
我希望用户能够在键盘上输入 6 个字段中的一个数字,然后让用户能够单击 Delete Button
返回并重新输入该数字。我希望用户必须点击Delete Button
。
另外,如何消除UItextfield
中闪烁的蓝线?
我已经被这个问题困扰了一段时间,无法弄清楚如何解决这个问题。
@objc func textFieldDidChange(textfield: UITextField)
let text = textfield.text
if text?.utf16.count == 1
switch textfield
case textfield1:
textfield1.backgroundColor = UIColor.black
textfield1.textColor = .white
textfield2.becomeFirstResponder()
textfield2.backgroundColor = UIColor.black
textfield2.textColor = .white
case textfield2:
textfield3.becomeFirstResponder()
textfield3.backgroundColor = UIColor.black
textfield3.textColor = .white
case textfield3:
textfield4.becomeFirstResponder()
textfield4.backgroundColor = UIColor.black
textfield4.textColor = .white
case textfield4:
textfield5.becomeFirstResponder()
textfield5.backgroundColor = UIColor.black
textfield5.textColor = .white
case textfield5:
textfield6.becomeFirstResponder()
textfield6.backgroundColor = UIColor.black
textfield6.textColor = .white
case textfield6:
textfield6.resignFirstResponder()
default:
break
else
【问题讨论】:
问得好伙计! 感谢@RannLifshitz 对此很困惑哈哈 【参考方案1】:你可以使用这个:
func textFieldDidChange(textField: UITextField)
let text = textField.text!
if text.utf16.count == 0
switch textField
case textField2:
textField1.becomeFirstResponder()
case textField3:
textField2.becomeFirstResponder()
case textField4:
textField3.becomeFirstResponder()
case textField5:
textField4.becomeFirstResponder()
case textField6:
textField5.becomeFirstResponder()
default:
break
else if text.utf16.count == 2
let indexStartOfText = text.index(text.startIndex, offsetBy: 1)
textField.text = String(text[..<indexStartOfText])
let tempStr = String(text[indexStartOfText])
switch textField
case textField1:
textField1.backgroundColor = UIColor.black
textField1.textColor = .white
textField2.becomeFirstResponder()
textField2.backgroundColor = UIColor.black
textField2.textColor = .white
textField2.text = tempStr
case textField2:
textField3.becomeFirstResponder()
textField3.backgroundColor = UIColor.black
textField3.textColor = .white
textField3.text = tempStr
case textField3:
textField4.becomeFirstResponder()
textField4.backgroundColor = UIColor.black
textField4.textColor = .white
textField4.text = tempStr
case textField4:
textField5.becomeFirstResponder()
textField5.backgroundColor = UIColor.black
textField5.textColor = .white
textField5.text = tempStr
case textField5:
textField6.becomeFirstResponder()
textField6.backgroundColor = UIColor.black
textField6.textColor = .white
textField6.text = tempStr
case textField6:
textField6.resignFirstResponder()
default:
break
在此代码中,您将永远不会关注UITextFields
的第一个字母,而是关注两个字母,如果sender.text.count
等于2,则为下一个UITextField
设置第二个数字,如果sender.text.count
等于 0 表示用户删除了某些内容(因为我们在 Editing Changed
事件中),我们应该向后移动光标。
并在 if 的第一条语句中为 UI 做所有你想做的事情。
这有点乱,但它有效。
【讨论】:
谢谢你!这有效,但是当我在第一个文本字段中选择键盘上的第一个数字时;在我到达第二个文本字段之前,文本字段不会变成我的黑色背景。知道为什么会这样吗?另外,我怎样才能摆脱 UItextField @arash 上闪烁的蓝线 是的,在光标到达第二个之前,第一个 UITextField 不会变成您的颜色,因为代码执行此操作,您可以更改viewDidLoad
中第一个 UITextField 的背景颜色并将 firstResponder 设置为首先。要隐藏光标,您可以使用blog.apoorvmote.com/…
虽然对您来说最好的方法是在viewController
中创建虚拟键盘并使用它们而不是使用真正的键盘和UITextField
感谢您的帮助!我想我想通了。非常感谢
欢迎您,如果您接受我的回答,我将不胜感激以上是关于当用户以编程方式单击swift ios中的删除按钮时,如何将光标从一个文本字段自动移动到另一个文本字段?的主要内容,如果未能解决你的问题,请参考以下文章
当 BLE 在 Swift 中以编程方式连接时,蓝牙设备设置中缺少信息按钮
在 iOS 7 上以编程方式安装 .mobileconfig 文件
如何在 swift Xcode 中以编程方式绑定/配对蓝牙 LE 设备?