Così ho questi campi di testo che mi sono reso conto che tutti hanno stesse proprietà, così ho creato nuova classe denominata "UserInputs" ed esteso da UITextField
, tutto funziona correttamente tranne una cosa, UITextFieldDelegate
funzioni doesn' t lavoro, voglio dire quando mi concentro su di loro non funziona, voglio aggiungerlo in codice perché quando ti concentri sui miei campi di input cambiano confine, come faccio correttamente sottoclasse da UITextField
correttamente Subclassing UITextField in rapida
gli unici problemi che ho quelle funzioni:
textFieldDidBeginEditing
textFieldDidEndEditing
e quindi non funziona.
questo è il mio classe dove tutto accade:
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
}
}
Questo è il mio sottoclasse:
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)
}
}
questo codice funzionato quando non avevo sottoclasse e stavo facendo dentro la mia principale classe, ma dopo aver creato le funzioni di focus della sottoclasse ha smesso di funzionare, tutto il resto funziona
.935.846.510,40321 milioni problema principale è che voglio implementarefunc textFieldDidBeginEditing() {
print("focused")
}
func textFieldDidEndEditing() {
print("lost focus")
}
questi nei miei campi di testo in modo che io non scrivo più e più volte
forse, ma non ha risolto il problema, quando scrivo il codice non v'è alcun suggerimento su: textFieldDid ... ma quando scrivo nella classe principale che mi dà suggerimenti – nikagar4
Questi metodi delegato appartengono nel delegato e non all'interno della classe UserInputs. –
non funziona ancora, posterò la classe principale in modo da poter vedere completamente quello che sto facendo – nikagar4