NSDatePicker专注于每月的某天编辑 [英] NSDatePicker focus on day of the month editing

查看:132
本文介绍了NSDatePicker专注于每月的某天编辑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有类似的代码:

let datePicker = NSDatePicker(....)
self.addSubview(datePicker)
self.window?.makeFirstResponder(datePicker)

调用makeFirstResponder时,第一个元素将成为编辑焦点.对于美国地区,此日期为每月的某天,因为日期格式为DD-MM-YYYY.对于日期格式为YYYY-MM-DD的其他区域,YYYY将成为编辑焦点.不管日期格式是什么,如何强制NSDatePicker开始每月的某天?

When makeFirstResponder is called first element gets editing focus. For U.S region this picks day of the month, because date format is DD-MM-YYYY. For other regions when date format is YYYY-MM-DD, YYYY gets editing focus. How can I force NSDatePicker to start editing day of the month no matter what date format is?

推荐答案

您可以使用DateFormatter方法func dateFormat(fromTemplate tmplate: String, options opts: Int, locale: Locale?) -> String?来检查当前的语言环境dateFormat,检查一天的位置,然后将Tab键发送0、1或2次:

You can use DateFormatter method func dateFormat(fromTemplate tmplate: String, options opts: Int, locale: Locale?) -> String? to check the current locale dateFormat, check the location of the day and send the tab key 0, 1 or 2 times:

import Cocoa

class ViewController: NSViewController {

    @IBOutlet weak var datePicker: NSDatePicker!

    override func viewWillAppear() {
        super.viewWillAppear()
        datePicker.locale = .init(identifier: "en_US")
        datePicker.dateValue = Date()
        if view.window?.makeFirstResponder(datePicker) == true {
            selectDayElement(from: datePicker)
        }
    }

    func selectDayElement(from datePicker: NSDatePicker) {
        if let firstIndex = DateFormatter
            .dateFormat(fromTemplate: "yyyyMMdd",
                        options: 0,
                        locale: datePicker.locale)?
            .components(separatedBy: .punctuationCharacters)
            .firstIndex(of: "dd") {
            (0..<firstIndex).forEach { _ in
                datePicker.keyDown(with: NSEvent(cgEvent: CGEvent(keyboardEventSource: nil, virtualKey: 48, keyDown: true)!)!)
            }
        }
    }

}



这篇关于NSDatePicker专注于每月的某天编辑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆