ios - 选择时如何更改uitextfield边框
问题描述
如何在选择或开始在其中键入一些文本时更改我的 uitextfield 的边框
我尝试但它不起作用检查代码
@IBOutlet weak var email: UITextField!
@IBOutlet weak var password: UITextField!
@IBOutlet weak var userName: UITextField!
这里有什么问题没有错误但没有任何反应
func fieldLayout () {
if (self.password.isSelected == true) {
self.password.layer.borderWidth = 4
self.password.layer.borderColor = #colorLiteral(red: 0, green: 0.8362106681, blue: 1, alpha: 1)
}
if (self.email.isSelected == true) {
self.email.layer.borderWidth = 5
self.email.layer.borderColor = #colorLiteral(red: 0, green: 0.8362106681, blue: 1, alpha: 1)
}
if (self.userName.isSelected == true) {
self.userName.layer.borderWidth = 5
self.userName.layer.borderColor = #colorLiteral(red: 0, green: 0.8362106681, blue: 1, alpha: 1)
}
}
解决方案
如果您想在用户开始输入时突出显示 TextField,我建议您在用户开始输入时使用UITextField
委托方法textFieldDidBeginEditing
进行处理。
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == email {
textField.layer.borderWidth = 4
textField.layer.borderColor = // your color
} else if ...
}
textFieldDidEndEditing
当用户完成输入时,您还可以使用委托方法进行处理
func textFieldDidEndEditing(_ textField: UITextField) {
textField.layer.borderWidth = // default width
textField.layer.borderColor = // default color
}
因此,如果您想使用这些方法,请不要忘记设置delegate
TextFields 的属性,viewDidLoad
例如
email.delegate = self
password.delegate = self
userName.delegate = self
也不要忘记实现UITextFieldDelegate
协议
class ViewController: UIViewController, UITextFieldDelegate
推荐阅读
- flutter - TextInputAction.newline 不适用于自定义键盘,仅适用于 GBoard
- python - 如何在 Python 中使用多线程查找数组中的最小值
- javascript - 由于屏幕上的图标数量,传单放大/缩小速度很慢
- ruby-on-rails - 警告:未找到公钥环;你运行过'pacman-key --init'吗?
- android - 如何将 AOSP 系统 UI 替换为自定义 UI?
- sql - 获取最高值 ID
- c# - 在 IHostedService 中获取当前用户
- ios - 在 Apple Search Ads 中跟踪转化
- django - 对象级别的 django 用户权限 - 怎么做(文档不明确)
- docker - 如何为本地开发设置 docker 和 nginx