Так я эти текстовые поля, что я понял, что все они имеют то же свойство, поэтому я создал новый класс под названием «UserInputs» и простирался от UITextField
, все работает нормально за исключением одной вещи, UITextFieldDelegate
функции Безразлично» я работаю, я имею в виду, когда я сосредотачиваюсь на них, он не работает, я хочу добавить его в код, потому что, когда вы фокусируетесь на моих полях ввода, они меняют границу, как правильно подклассы от UITextField
Правильно подклассы UITextField в скор
Единственные проблемы, которые У меня есть следующие функции:
textFieldDidBeginEditing
textFieldDidEndEditing
и так не работает.
это мой класс, где все происходит:
import Foundation
import UIKit
class RegistrationViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var firstName: UserInputs!
@IBOutlet weak var test: UserInputs!
override func viewDidLoad() {
super.viewDidLoad()
self.firstName.delegate = self
self.test.delegate = self
}
}
Это мой подкласс:
class UserInputs: UITextField{
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
createBorder()
}
func createBorder(){
let border = CALayer()
let width = CGFloat(2.0)
border.borderColor = UIColor(red: 55/255, green: 78/255, blue: 95/255, alpha: 1.0).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
//print("border created")
}
func textFieldDidBeginEditing() {
print("focused")
self.pulseBorderColor()
}
func textFieldDidEndEditing() {
print("lost focus")
self.reversePulseBorderColor()
}
func pulseBorderColor(){
let pulseAnimation = CABasicAnimation(keyPath: "borderColor")
pulseAnimation.duration = 0.35
pulseAnimation.fromValue = UIColor(red: 55/255, green: 78/255, blue: 95/255, alpha: 1.0).CGColor
pulseAnimation.toValue = UIColor(red: 252/255, green: 180/255, blue: 29/255, alpha: 1.0).CGColor
pulseAnimation.fillMode = kCAFillModeForwards
pulseAnimation.removedOnCompletion = false
pulseAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
self.layer.sublayers![0].addAnimation(pulseAnimation,forKey: nil)
}
func reversePulseBorderColor(){
let pulseAnimation = CABasicAnimation(keyPath: "borderColor")
pulseAnimation.duration = 0.35
pulseAnimation.fromValue = UIColor(red: 252/255, green: 180/255, blue: 29/255, alpha: 1.0).CGColor
pulseAnimation.toValue = UIColor(red: 55/255, green: 78/255, blue: 95/255, alpha: 1.0).CGColor
pulseAnimation.fillMode = kCAFillModeForwards
pulseAnimation.removedOnCompletion = false
pulseAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
self.layer.sublayers![0].addAnimation(pulseAnimation,forKey: nil)
}
}
этот код работал, когда я не имел никакого подкласса и делал это в моей основной класс, но после создания подкласса функции фокуса перестали работать, все остальное работает
Основная проблема заключается в том, что я хочу реализовать
func textFieldDidBeginEditing() {
print("focused")
}
func textFieldDidEndEditing() {
print("lost focus")
}
эти мои TextFields так я не пишу его снова и снова
может быть, но это не решает проблему, когда я пишу код не существует никаких намеков на: textFieldDid ... но когда я пишу это в основном классе это дает мне советы – nikagar4
Этим методы делегируют принадлежат делегату а не в классе UserInputs. –
он все еще не работает, я опубликую основной класс, чтобы вы могли полностью увидеть, что я делаю – nikagar4