因此,我拥有这些文本字段,我意识到它们都具有相同的属性,因此我创建了一个名为“ UserInputs
”的新类,并从进行了扩展UITextField
,除一件事外,其他所有内容均正常运行,UITextFieldDelegate
功能不起作用,我的意思是当我专注于它们时不起作用,我想在代码中添加它,因为当您专注于我的输入字段时,它们会更改边框,我该如何正确地从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")
}
这些在我的文本字段中,所以我不会一遍又一遍地写它
看起来UITextFieldDelegate
您的代码中的功能有些偏离。他们应该是:
func textFieldDidBeginEditing(textField: UITextField) {
print("focused")
}
func textFieldDidEndEditing(textField: UITextField) {
print("lost focus")
}
并且由于您希望UserInputs
对象成为它们自己的委托,因此我也添加了该代码。为了证明这一点,我有以下两个文件:
ViewController.swift
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
var textField: UserInputs!
override func viewDidLoad() {
super.viewDidLoad()
textField = UserInputs(frame: CGRectMake(100, 100, 200, 40))
view.addSubview(textField!)
}
}
UserInputs.swift
import UIKit
class UserInputs: UITextField, UITextFieldDelegate {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
delegate = self
createBorder()
}
required override init(frame: CGRect) {
super.init(frame: frame)
delegate = self
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(textField: UITextField) {
print("focused")
}
func textFieldDidEndEditing(textField: UITextField) {
print("lost focus")
}
}
你能在Swift中继承枚举吗?关于枚举继承,应该知道哪些规则? 以下测试代码: 产生
本文向大家介绍c# 继承快速入门,包括了c# 继承快速入门的使用技巧和注意事项,需要的朋友参考一下 在面向对象当中继承是非常重要的,也是面向对象的三大特性之一(继承、封装、多态),今天我们来揭开他的神秘面纱。 话不多说,我们上菜。 写好代码后我们运行看看效果! 很显然看出来,公司两个程序员都继承了程序员类。 总结: 父类包含了多少内容,派生类(子类)全部接受(包括属性 字段 方法等), 可以重写覆
问题内容: 我已经阅读了很多有关javascript中“继承”的文章。其中一些使用,而另一些则建议。我读得越多,我就越困惑,因为它似乎存在着无穷无尽的变体来解决继承问题。 有人可以告诉我最可接受的方式吗(如果有的话,是事实上的标准)吗? (我想要一个可以扩展或的基础对象。) 问题答案: 简单:并非在所有环境中均受支持,但可以填充。除此之外,两者具有不同的目的:只需创建一个对象从其他继承,同时 还
我在一个类中创建了3个不同的slf4j记录器: 奇怪的是,即使在调试级别配置了X.Y.Z.MyClass,MyClass-a和MyClass-b记录器也不是在调试级别记录日志,而是在配置的根级别记录日志(在我的例子中是info)。如下所示,即使为-a和-b指定特定的记录器也不起作用。在我将根更改为debug之前,它们不会在debug级别进行日志记录。真的被这个难住了,有什么想法吗?
问题内容: 假设我有两个类:基类和子类,如下所示: 当调用子类的反初始化器时,是否调用nil来给变量赋值?还是我必须在子类的反初始化器中手动分配? 问题答案: 您可以选择在子类中包含一个内部。 如果你这样做 您会看到首先被调用是内部调用,然后 被调用。所以是,但在子类之后被调用。 该书还说(第286页): 您不允许自己调用反初始化程序。超类反初始化器由其子类继承,并且超类反初始化器在子类反初始化器
FAQs in section [24]: [24.1] 如何表示“私有继承”? [24.2] 私有继承和组合(composition)有什么类似? [24.3] 我应该选谁:组合还是私有继承? [24.4] 从私有继承类到父类需要指针类型转换吗? [24.5] 保护继承和私有继承的关系是什么? [24.6] 私有继承和保护继承的访问规则是什么? 24.1 如何表示“私有继承”? 用 : priv