2016-07-24 2 views
1

오류 메시지가 나타나고 사용자가 확인을 클릭 한 후 텍스트 필드를 포커스 (활성화)로 설정하려고합니다. VBA에서 당신이 becomeFirstResponder()를 호출해야 텍스트 필드에 포커스를 설정하려면 txtbox.SetFocus경고 후 텍스트 필드에서/activate/setFocus로 이동할 수 있습니다.

같은
// 
// 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() 
    } 


} 

답변

2

했다.

textfield.becomeFirstResponder() 

업데이트. 경고가 해제 된 후에 포커스를 설정하려면 처리기로 설정하십시오.

let okButton = UIAlertAction(title: okText, style: UIAlertActionStyle.Cancel, handler: { _ in 
    textfield.becomeFirstResponder() 
}) 
alert.addAction(okButton) 
+0

감사합니다. 그게 내가 무엇을 찾고 있었는지. 그것은 효과가있다! –

+0

시간을 절약 해 주셔서 감사합니다 ... 중대한 답변 – shashik493