Swift code; unable to dismiss keypad using standard method

238 Views Asked by At

I've been working on a Swift tutorial. In the tutorial the authors neglected to explain how to dismiss the keyboard on the simulator. I tried the standard method that I'm aware of; resignFirstResponder( ) However I keep getting an error; cannot convert a string into a bool. I haven't been able to find a workable answer on Stack overflow to date. Any ideas? I've included the code below.

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()


    }


}
1

There are 1 best solutions below

0
On

The keyboard is up because one of your UITextField's is the first responder. Since you don't know which one, call resignFirstResponder() on each of them.

In daysButtonPressed() instead of calling:

messageLabel.resignFirstResponder()

You need to call:

dayTextField.resignFirstResponder()
monthTextField.resignFirstResponder()
yearTextField.resignFirstResponder()