0

我一直在编写 Swift 教程。在教程中,作者忽略了解释如何关闭模拟器上的键盘。我尝试了我知道的标准方法;resignFirstResponder() 但是我不断收到错误消息;无法将字符串转换为布尔值。到目前为止,我还没有找到关于 Stack Overflow 的可行答案。有任何想法吗?我已经包含了下面的代码。

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {


    @IBOutlet weak var yearTextField: UITextField!

    @IBOutlet weak var dayTextField: UITextField!

    @IBOutlet weak var monthTextField: UITextField!


    @IBOutlet weak var messageLabel: UILabel!



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

        self.yearTextField.delegate = self
        self.dayTextField.delegate = self
        self.monthTextField.delegate = self
    }

      //    Suggested fix not working?

     //  func textFieldShouldReturn(textField: UITextField!) -> Bool {
     //   textField.resignFirstResponder()
     //   return true;
     //  }


    @IBAction func daysButtonPressed(sender: AnyObject) {

        println("Days Button Pressed")

        messageLabel.text = "Button pressed"

        messageLabel.resignFirstResponder()



        var dateComponents = NSDateComponents()
        dateComponents.day = dayTextField.text.toInt()! // 28
        dateComponents.month = monthTextField.text.toInt()! // 3
        dateComponents.year =  yearTextField.text.toInt()! // 1956

        var calendar = NSCalendar(identifier: NSGregorianCalendar)
        var birthDate = calendar.dateFromComponents(dateComponents) //NSDate
        var currentDate = NSDate.date()


        println(birthDate)
        println("Current Date \(currentDate)")


        var durationDateComponets = calendar.components(NSCalendarUnit.CalendarUnitDay,
            fromDate: birthDate!,
            toDate: currentDate,
            options: nil)


        var numberOfDaysAlive = durationDateComponets.day

        //Format with commas

        var numberFormatter = NSNumberFormatter()
        numberFormatter.usesGroupingSeparator = true

        var dayString = numberFormatter.stringFromNumber(numberOfDaysAlive)



        messageLabel.text = "Days alive: \(dayString)"


      //   self.messageLabel.resignFirstResponder()


    }


}
4

1 回答 1

1

键盘已启动,因为您UITextField的一个是第一响应者。既然你不知道是哪一个,那就去拜访resignFirstResponder()他们每个人。

daysButtonPressed()不是调用:

messageLabel.resignFirstResponder()

您需要致电:

dayTextField.resignFirstResponder()
monthTextField.resignFirstResponder()
yearTextField.resignFirstResponder()
于 2014-10-01T21:42:55.637 回答