2016-04-19 19 views
0

サブビューでUITextFieldのテキストプロパティを非表示にする必要があります。 これはかなり簡単なようですが、残念ながらうまくいきません。 どうすれば間違っていますか?サブビューでUITextFieldテキストを非表示にするには?

ここでは、コードです:それはUITextFieldaddSubviewに不可能だよう

override func viewDidLoad() { 
    super.viewDidLoad() 

    let txtField = UITextField() 
    txtField.frame = CGRect(x: 10, y: 50, width: 300, height: 30) 
    txtField.text = "This text is hidden under UILabel" 
    txtField.backgroundColor = UIColor.blueColor() 
    view.addSubview(txtField) 

    let label = UILabel() 
    label.frame = CGRect(x: 0, y: 0, width: 300, height: 30) 
    label.backgroundColor = UIColor.redColor() 
    label.textColor = UIColor.whiteColor() 
    label.text = "This text should appear on top" 

    txtField.addSubview(label) 
    txtField.bringSubviewToFront(label) 
} 
+3

何が起こっているのかを分析したい場合は、Xcodeの「デバッグビュー階層」機能が役立つことがあります。 –

+0

あなたは何を正確にしようとしていますか?これは[XY問題](http://meta.stackexchange.com/q/66377/244435)です。 – nhgrif

+0

ラベルは、ユーザーがUITextFieldのオーバーレイビューをタップすると表示される検証メッセージです(存在する場合)。検証メッセージを表示しようとしましたが、すでに何かを入力した場合、そのテキストの下にメッセージ(UILabel)が表示されます。 – mra214

答えて

1
let txtField = UITextField() 
    txtField.frame = CGRect(x: 10, y: 50, width: 300, height: 30) 
    txtField.text = "This text is hidden under UILabel" 
    view.addSubview(txtField) 

    let label = UILabel() 
     let label = UILabel() 
    // label.frame = CGRect(x: 0, y: 0, width: 300, height: 30) 
    label.frame = txtField.frame 
    label.backgroundColor = UIColor.redColor() 
    label.textColor = UIColor.whiteColor() 
    label.text = "This text should appear on top" 


    label.backgroundColor = UIColor.redColor() 
    label.textColor = UIColor.whiteColor() 
    label.text = "This text should appear on top" 

    view.addSubview(label) // add label on view with same position ... 

または単に動作しているよりもlableのzオーダーを変更するだけです。

let txtField = UITextField() 
    txtField.frame = CGRect(x: 10, y: 50, width: 300, height: 30) 
    txtField.backgroundColor = UIColor.yellowColor() 
    txtField.text = "This text is hidden under UILabel" 
    view.addSubview(txtField) 

    let label = UILabel() 
    label.frame = CGRect(x: 0, y:0, width: 300, height: 30) 
    label.backgroundColor = UIColor.redColor() 
    label.textColor = UIColor.whiteColor() 
    label.text = "This Label should appear on top" 
    label.layer.zPosition=1 
    txtField.addSubview(label) 
+0

あなたのコードは動作しますが、私はそれをUITextFieldのサブビューにする必要があります。 – mra214

+0

@ mra214更新された回答を参照してください – ilesh

+0

それは働いた。ありがとうございました。あなたは私の髪を保存しました) – mra214

0

が見えます。代わりに、テキストフィールドの上にviewに追加することができます。

+0

サブビューはUITextFieldの背景をカバーしますが、テキストはカバーしません。 – mra214

0

これが私の仕事:ループを使用して

override func viewWillAppear(animated: Bool) { 
     let sampleTextField = UITextField() 
sampleTextField.frame = CGRect(x: 10, y: 50, width: 300, height: 100) 
sampleTextField.text = "This text is hidden under UIsampleBackgroundLabel" 
sampleTextField.textColor = UIColor.blackColor() 
sampleTextField.backgroundColor = UIColor.whiteColor() 
view.addSubview(sampleTextField) 

let sampleBackgroundLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 30)) 
sampleBackgroundLabel.textColor = UIColor.whiteColor() 
sampleBackgroundLabel.text = "This text should appear on top" 


sampleTextField.addSubview(sampleBackgroundLabel) 
sampleTextField.sendSubviewToBack(sampleBackgroundLabel) 


} 

チェックを。

if(condition == true) 
     { 
      sampleBackgroundLabel.textColor = UIColor.whiteColor() 
     } 
     else 
     { 
      sampleBackgroundLabel.textColor = UIColor.blueColor() 

     } 
関連する問題