Swift code; unable to dismiss keypad using standard method

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