2016-05-17 6 views
0

i zwei benutzerdefinierte Ansicht Klassen hinzugefügt und die Elemente dieser Klasse sind addede Klasse Viewcontroller, aber ich kann nicht erste Element accecssing aber ich zweite ElementUIElements nicht Brennen nicht auf Sicht highrarchy

hören zugreifen kann meinen Code

1. Klasse

Klasse TextField-: UIView {

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


    let view=UIView(frame : CGRectMake(8,100,270,47)) 

    let headerText=UILabel(frame : CGRectMake(0,0,view.bounds.width,16)) 
    headerText.text="label" 
    headerText.textColor=UIColor.blackColor() 
    headerText.textAlignment=NSTextAlignment.Left 
    headerText.font = UIFont.systemFontOfSize(13.0) 
    headerText.numberOfLines = 0 
    view.addSubview(headerText) 

    let textField=UITextField(frame : CGRectMake(0,20,view.bounds.width,28)) 
    textField.borderStyle=UITextBorderStyle.RoundedRect 
    textField.userInteractionEnabled=true 
    textField.keyboardType=UIKeyboardType.NamePhonePad 

    view.addSubview(textField) 

    self.addSubview(view) 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

}

2. Klasse

Protokoll ElementDelegate {

func buttonClick(sender:UIButton) 

}

Klasse ButtonClass: UIView {

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

    let button=UIButton(frame: CGRectMake(10,50,270,30)) 
    button.setTitle("Click", forState: UIControlState.Normal) 
    button.backgroundColor=UIColor.blueColor() 
    button.userInteractionEnabled=true 
    button.addTarget(self, action: #selector(button_click(_:)), forControlEvents: UIControlEvents.TouchUpInside) 

    self.addSubview(button) 

} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

func button_click(sender:UIButton){ 
    delegate.buttonClick(sender) 
} 

}

meine Viewcontroller Klasse

Klasse Viewcontroller: UIViewController, ElementDelegate {

override func viewDidLoad() { 

    let screenSize:CGRect=UIScreen.mainScreen().bounds 


    let date = TextField(frame: CGRectMake(0,10,screenSize.width,screenSize.height)) 
    self.view.addSubview(date) 

    let element = Button(frame: CGRectMake(0,70,screenSize.width,screenSize.height)) 
    element.delegate = self 
    self.view.addSubview(element) 
} 

}

wenn unter fließendem i erste Textfeld Ansicht zweiten addierten i-Taste Ansicht hinzugefügt, aber wenn ich in Textbox klicken ich nicht zugreifen kann, aber Taste funktioniert gut wenn i-Taste Textbox funktioniert gut entfernen, warum ich nicht beide eine nach der anderen

zugreifen, können Sie mir bitte helfen .....

Antwort

0
let date = TextField(frame: CGRectMake(0,10,screenSize.width,screenSize.height)) 
... 
let element = Button(frame: CGRectMake(0,10,screenSize.width,screenSize.height)) 

Sie haben zwei Unteransichten mit genau demselben Rahmen (Größe und Position) erstellt. Die Sekunde, die du hinzufügst, ist über der anderen und nimmt die Berührungsereignisse auf, selbst wenn die Schaltfläche und das Textfeld in ihnen an verschiedenen Stellen sind - eine Ebene UIView wird weiterhin Berührungsereignisse aufnehmen.

Warum erstellen Sie eine Ansichtsunterklasse, die nur eine andere Ansicht in einer anderen Position enthält? Warum positionieren Sie den Button und das Textfeld nicht einfach direkt?

+0

erstens vielen dank für die antwort ich bin rendering diese textfelder, buttons von xml tags zu bauen ui in meiner ansicht habe ich diese datum und taste nacheinander –

+0

ich versuchte ihren vorschlag seine workin thanq –

Verwandte Themen