横向模式下 UITextField 中间出现奇怪的黑条

Strange black bar in middle of UITextField in landscape mode

我已经尝试通过视图调试器对其进行调试,但仍然无法检测到其中的原因。

TextField 有以下自定义 class 如果可能有一些隐藏的问题

class ChatTextField: UITextField {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        initNib()
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        initNib()
    }

    func initNib() {

        self.attributedPlaceholder = NSAttributedString(string: "Send a message to Kael",
                                                        attributes: [NSAttributedString.Key.foregroundColor: #colorLiteral(red: 0.1879999936, green: 0.1979999989, blue: 0.2930000126, alpha: 1)])
        self.layer.borderWidth = 2
        self.layer.cornerRadius = 4.0
        self.layer.borderColor = #colorLiteral(red: 0.3059999943, green: 0.5329999924, blue: 0.5490000248, alpha: 1)

        self.addInnerShadow(onSide: .all, shadowColor: UIColor(red: 0, green: 0, blue: 0, alpha: 0.2), shadowSize: 10, cornerRadius: 15, shadowOpacity: 0.8)
    }
    let padding = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 30)

     override open func textRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: padding)
     }

     override open func placeholderRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: padding)
     }

     override open func editingRect(forBounds bounds: CGRect) -> CGRect {
        return bounds.inset(by: padding)
     }
}

您正在从 UITextField 扩展的 initNib() 方法中调用一个方法来提供内部阴影。

您必须根据纵向和横向模式设置不同的 offset 来修改阴影方法。

尝试删除将阴影应用到文本字段的阴影方法,然后检查它是否正常工作。