【问题标题】:Swift code; unable to dismiss keypad using standard methodSWIFT代码;无法使用标准方法关闭键盘
【发布时间】:2014-11-26 20:15:52
【问题描述】:

我一直在编写 Swift 教程。 在教程中,作者忽略了解释如何关闭模拟器上的键盘。 我尝试了我知道的标准方法;辞职第一响应者() 但是我不断收到错误消息;无法将字符串转换为布尔值。 到目前为止,我还没有找到关于 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()


    }


}

【问题讨论】:

    标签: ios swift keyboard iphone-keypad


    【解决方案1】:

    键盘已启动,因为您的 UITextField 之一是第一响应者。由于您不知道是哪一个,因此请分别致电resignFirstResponder()

    daysButtonPressed() 中而不是调用:

    messageLabel.resignFirstResponder()
    

    您需要致电:

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

    【讨论】:

    • 欢迎来到 Stack Overflow。请点击答案旁边的复选标记接受我的回答。
    猜你喜欢
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2010-12-25
    • 2020-02-24
    相关资源
    最近更新 更多