2016-07-05 3 views
1

Я создаю приложение в Xcode с помощью swift, и у меня есть текстовое поле, которое использует UIDatePicker, но теперь все мои другие текстовые поля используют этот механизм выбора даты, когда я хочу, чтобы они были всего лишь цифровой клавиатурой. Буду признателен за любую оказанную помощь. Текстовое поле, в котором я хочу быть UIDatePicker, называется «StartDate», но у меня есть другие, которые должны быть числовой панелью. Я все еще новичок в Swift и XCode, но, как я уже сказал, всякая помощь очень ценится.Текстовые поля используют UIDatePicker

import UIKit 
import EventKit 

class ViewController: UIViewController, UITextFieldDelegate { 

weak var StartDate: UITextField! 

func textFieldDidBeginEditing(textField: UITextField) { 
    let datePicker = UIDatePicker() 
    textField.inputView = datePicker 
    datePicker.datePickerMode = UIDatePickerMode.Date 

    datePicker.addTarget(self, action: "datePickerChanged:", forControlEvents: .ValueChanged) 
} 

func datePickerChanged(sender: UIDatePicker) { 
    let formatter = NSDateFormatter() 
    formatter.dateStyle = .LongStyle 
    StartDate.text = formatter.stringFromDate(sender.date) 
} 

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

// Code to close keyboard that can be used throughout the app 
func closeKeyboard() { 
    self.view.endEditing(true) 
} 

// Close keyboard on touch anywhere else 
    override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
    closeKeyboard()} 


override func viewDidLoad() { 
    super.viewDidLoad() 
    StartDate.delegate = self 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

ответ

0

попробовать что-то вроде этого:

func textFieldDidBeginEditing(textField: UITextField) { 
    if textField == StartDate { 
     let datePicker = UIDatePicker() 
     textField.inputView = datePicker 
     datePicker.datePickerMode = UIDatePickerMode.Date 

     datePicker.addTarget(self, action: "datePickerChanged:", forControlEvents: .ValueChanged) 
    }else { 
     //do stuff with the rest of the textFields 
    } 
}