我想为我的UITextField创建一个动画。要做到这一点,我创建了一个子类的UITextField的,我存储在我的代码有:斯威夫特动画文本字段
import Foundation
import UIKit
class textfieldEdit: UITextField, UITextFieldDelegate {
let border = CALayer()
let width = CGFloat(2.0)
required init?(coder aDecoder: (NSCoder!)) {
super.init(coder: aDecoder)
self.delegate=self;
border.borderColor = UIColor(red: 216/255, green: 216/255, blue: 216/255, alpha: 100).cgColor
border.frame = CGRect(x: 0, y: self.frame.size.height - width, width: self.frame.size.width, height: self.frame.size.height)
border.borderWidth = width
self.layer.addSublayer(border)
self.layer.masksToBounds = true
}
override func draw(_ rect: CGRect) {
border.frame = CGRect(x: 0, y: self.frame.size.height - width, width: self.frame.size.width, height: self.frame.size.height)
}
override func awakeFromNib() {
super.awakeFromNib()
border.frame = CGRect(x: 0, y: self.frame.size.height - width, width: self.frame.size.width, height: self.frame.size.height)
}
}
然而,当有人点击文本字段里面,我想更新的文本框的边框,使其绿色。有没有一种有效的方法来做到这一点?我试图分配一个函数,只要有人在我的主视图控制器中的文本框内触摸,但它似乎没有工作。
是否有更好的方法比启用触摸?我宁愿在用户在文本框中输入时使用,因为我不想让动画在一次触摸后消失 – codeislife
啊,我明白了你现在要做的事情。你应该看看“追赶”响应者。所以当这个uitextfield“BECOMES FIRST RESPONDER”就是你想要设置新颜色的时候。然后当它“RESIGN BEING FIRST RESPONDER”可以返回到旧的颜色。这是你正在寻找的东西,但这与触摸无关。 https://stackoverflow.com/questions/7022180/how-to-know-when-uitextview-became-first-responder – Pochi
只实现与2种方法我在说明书的末尾添加的委托。@ codeislife – Pochi