我想在出现错误信息并且用户点击确定后设置焦点(激活)文本字段。在VBA中,它类似于txtbox.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()
}
}
答案 0 :(得分:2)
要将焦点设置在文本字段上,您应该调用becomeFirstResponder()
。
textfield.becomeFirstResponder()
<强>更新即可。 如果要在解除警报后设置焦点,请将其设置为处理程序:
let okButton = UIAlertAction(title: okText, style: UIAlertActionStyle.Cancel, handler: { _ in
textfield.becomeFirstResponder()
})
alert.addAction(okButton)