2016-07-24 69 views
1

Ich möchte Focus (aktivieren) ein Textfeld, nachdem eine Fehlermeldung angezeigt und der Benutzer auf OK geklickt hat. In VBA war es so etwas wie txtbox.SetFocusWie kann ich auf ein Textfeld nach einer Warnung gehen/aktivieren/setzenFokus

// 
// ViewController.swift 
// Trinkgeldrechner 
// 
// Created by Joshua Fenster on 23.07.16. 
// Copyright © 2016 purple. All rights reserved. 
// 

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate{ 




    @IBOutlet weak var lableTrinkgeldEuro: UILabel! 

    @IBOutlet weak var labelGesamtbetragEuro: UILabel! 
    @IBOutlet weak var textfieldUserEingabePreisdesAbends: UITextField! 
    @IBOutlet weak var textfieldUserEingabeProzentTrinkgeld: UITextField! 

    //-- ME--- 

    @IBOutlet weak var switchService: UISwitch! 
    @IBOutlet weak var switchFast: UISwitch! 

    @IBAction func switchACTIONService(sender: AnyObject) 
    { 
     check() 
    } 


    @IBAction func switchACTIONFast(sender: AnyObject) 
    { 
     check() 
    } 





    //@IBAction func textfieldACTIONUserEingabeProzentTrinkgeld(sender: AnyObject) 
    //{ 
     //trinkgeldBerechnen() 
    // } 

    @IBAction func textfieldACTIONUserEingabeProzentTringeld(sender: AnyObject) 
    { 
     check() 

    } 


    @IBAction func buttonClear(sender: AnyObject) 
    { 
     clear() 
    } 


    //----------------------------------------------------------------------- 

    //---- Globale Variablen 


    var gesamtbetrag: Float = 0.00 

    var trinkgeld: Float = 0.00 

    var strPreisdesAbends : String = "" 

    var strProzentTrinkgeld : String = "" 

    var trinkgeldMulti: Float = 0.00 

    var trinkgeldMulti2: Float = 0.00 







    //----------------------------------------------------------------------- 

    // ---- Funktionen 


    func check() 
    { 
     if (textfieldUserEingabePreisdesAbends.text == "") 
     { 
      displayAlert() 
      clear() 

     } 
     else 
     { 
      trinkgeldBerechnen() 
     } 
    } 


    func trinkgeldBerechnen() 
    { 
     strPreisdesAbends = textfieldUserEingabePreisdesAbends.text! 
     strProzentTrinkgeld = textfieldUserEingabeProzentTrinkgeld.text! 

      if switchService.on 
      { 
       trinkgeldMulti = 1 
      } 
      else 
      { 
       trinkgeldMulti = 0 
      } 


      if switchFast.on 
      { 
       trinkgeldMulti2 = 1 
      } 
      else 
      { 
       trinkgeldMulti2 = 0 
      } 

     //----- Strings in Zahlen 

     let preisdesabends = Float(strPreisdesAbends) 
     let prozenttrinkgeld = Float(strProzentTrinkgeld) 

     //----- Berechnung 

     trinkgeld = preisdesabends! * ((prozenttrinkgeld! + trinkgeldMulti + trinkgeldMulti2)/100) 

     gesamtbetrag = preisdesabends! + trinkgeld 

     ausgabeTrinkgeld() 
    } 


    func ausgabeTrinkgeld() 
    { 

     let formatGesamtbetrag = String(format:"%0.2f", gesamtbetrag) 
     let formatTrinkgeld = String(format:"%0.2f", trinkgeld) 



     lableTrinkgeldEuro.text = " \(formatTrinkgeld) €" 
     labelGesamtbetragEuro.text = " \(formatGesamtbetrag) €" 


    } 


    func displayAlert() 
    { 

     let titel = "Rechnungsbetrag" 
     let message = "Du musst erst den Rechnungsbetrag eintragen" 
     let okText = "Ok" 

     let alert = UIAlertController(title: titel, message: message, preferredStyle: UIAlertControllerStyle.Alert) 

     let okButton = UIAlertAction(title: okText, style: UIAlertActionStyle.Cancel, handler: nil) 
     alert.addAction(okButton) 

     presentViewController(alert, animated: true, completion: nil) 

    } 


    // --- Clear 


    func clear() 
    { 
     labelGesamtbetragEuro.text = "0.00€" 
     lableTrinkgeldEuro.text = "0.00€" 
     textfieldUserEingabeProzentTrinkgeld.text = "" 
     textfieldUserEingabePreisdesAbends.text = "" 
     switchService.setOn(false, animated: true) 
     switchFast.setOn(false, animated: true) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // Tastatur ausblenden 

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     hideKeyboards() 

    } 
    func hideKeyboards() { 
     textfieldUserEingabePreisdesAbends.resignFirstResponder() 
     textfieldUserEingabeProzentTrinkgeld.resignFirstResponder() 
    } 


} 

Antwort

2

den Fokus auf ein Textfeld So stellen Sie becomeFirstResponder() nennen sollte.

textfield.becomeFirstResponder() 

aktualisieren. Wenn Sie den Fokus festlegen möchten, nachdem die Warnung abgewiesen wurde, legen Sie sie als Handler fest:

+0

Vielen Dank! Genau das habe ich gesucht. Es funktionierte! –

+0

Dank Zeit sparen ... Tolle Antwort – shashik493