IOS自定义UITextField未在设备和情节提要上显示占位符文本
我对以下UITextField自定义类的占位符文本有问题。当我在设备中运行时,它根本不显示占位符文本。有时它也不能正确地显示在故事板中IOS自定义UITextField未在设备和情节提要上显示占位符文本,ios,swift,Ios,Swift,我对以下UITextField自定义类的占位符文本有问题。当我在设备中运行时,它根本不显示占位符文本。有时它也不能正确地显示在故事板中 import UIKit class UnderlineTextField : UITextField, UITextFieldDelegate { let border = CALayer() let numericKbdToolbar = UIToolbar() required init(coder aDecoder: NSCo
import UIKit
class UnderlineTextField : UITextField, UITextFieldDelegate
{
let border = CALayer()
let numericKbdToolbar = UIToolbar()
required init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)!
delegate = self
createBorder()
}
required override init(frame: CGRect)
{
super.init(frame: frame)
delegate = self
createBorder()
}
override func layoutSubviews()
{
createBorder()
}
func createBorder()
{
let width = CGFloat(2.0)
if isEditing == false
{
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
self.keyboardType = UIKeyboardType.numberPad
numericKbdToolbar.barStyle = UIBarStyle.default
let space = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
let callback = #selector(UnderlineTextField.finishedEditing)
let donebutton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self, action: callback)
numericKbdToolbar.setItems([space, donebutton], animated: false)
numericKbdToolbar.sizeToFit()
self.inputAccessoryView = numericKbdToolbar
}
func pulseBorderColor()
{
border.borderColor = UIColor.white.cgColor
}
func normalColor()
{
border.borderColor = UIColor(red: 55/255, green: 78/255, blue: 95/255, alpha: 1.0).cgColor
}
func textFieldDidBeginEditing(_ textField: UITextField)
{
pulseBorderColor()
}
func textFieldDidEndEditing(_ textField: UITextField)
{
normalColor()
}
// MARK: On Finished Editing Function
@objc func finishedEditing()
{
self.resignFirstResponder()
}
}
我甚至试图删除具有底部边框和委托的代码,但仍然没有成功。我不确定出了什么问题。任何帮助都将不胜感激
谢谢,因为你忘了
super.layoutSubviews()
如
每当您覆盖函数时,您必须确保是否调用它。super
。有了苹果组件,你最好把它打开
super
至于它没有出现在故事板上,我认为这是一个Xcode错误
编辑:Xcode 9.3修复了阻止占位符文本出现在情节提要中的错误。这是一个假定报告的Xcode错误,运行Xcode在高分辨率上。。。同样的问题
转到编辑器->自动刷新视图确保选中此选项并调用layoutifneededWow,我犯了这样一个愚蠢的错误,感觉真的很愚蠢。非常感谢。
override func layoutSubviews() {
super.layoutSubviews()
//...
}