2014-10-01 89 views
0

我一直在研究Swift教程。 在本教程中,作者忽略瞭解釋如何關閉模擬器上的鍵盤。 我嘗試了我所知道的標準方法; resignFirstResponder() 但是我不斷收到一個錯誤;不能將字符串轉換爲布爾值。 我一直無法找到堆棧溢出日期可行的答案。 任何想法? 我已經包含下面的代碼。Swift代碼;無法使用標準方法解除小鍵盤

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

由於您的UITextField是您的第一個響應者,所以鍵盤已啓動。由於您不知道哪一個,請撥打resignFirstResponder()

daysButtonPressed(),而不是調用:

messageLabel.resignFirstResponder() 

你需要調用:

dayTextField.resignFirstResponder() 
monthTextField.resignFirstResponder() 
yearTextField.resignFirstResponder() 
+0

感謝,它的偉大工程! – 2014-10-01 23:02:55

+0

歡迎來到Stack Overflow。請點擊答案旁邊的複選標記,接受我的答案。 – vacawama 2014-10-01 23:16:05