UIDatePicker 设置最大日期

2023-12-03

我使用此代码来阻止用户超出我设置的限制:

在视图中确实加载了:

NSDate *Date=[NSDate date];
[DatePickerForDate setMinimumDate:Date];
[DatePickerForDate setMaximumDate:[Date dateByAddingTimeInterval: 63072000]]; //time interval in seconds

这个方法:

- (IBAction)datePickerChanged:(id)sender{
if ( [DatePickerForDate.date timeIntervalSinceNow ] < 0 ){
    NSDate *Date=[NSDate date];
    DatePickerForDate.date = Date;
}

if ( [DatePickerForDate.date timeIntervalSinceNow ] > 63072000){
    NSDate *Date=[NSDate date];
    DatePickerForDate.date = Date;
}
}

第一部分有效( 63072000 的部分有时有效,有时无效。顺便说一下63072000大约是2年。有任何想法吗?


我尝试使用 UIDatePicker,最大日期为一个月后:

NSDate* now = [NSDate date] ;
// Get current NSDate without seconds & milliseconds, so that I can better compare the chosen date to the minimum & maximum dates.
NSCalendar* calendar = [NSCalendar currentCalendar] ;
NSDateComponents* nowWithoutSecondsComponents = [calendar components:(NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit) fromDate:now] ;
NSDate* nowWithoutSeconds = [calendar dateFromComponents:nowWithoutSecondsComponents] ;
//  UIDatePicker* picker ;
picker.minimumDate = nowWithoutSeconds ;

NSDateComponents* addOneMonthComponents = [NSDateComponents new] ;
addOneMonthComponents.month = 1 ;
NSDate* oneMonthFromNowWithoutSeconds = [calendar dateByAddingComponents:addOneMonthComponents toDate:nowWithoutSeconds options:0] ;
picker.maximumDate = oneMonthFromNowWithoutSeconds ;

我找到:

  • 第一次尝试选择最小和最大范围之外的日期时,UIDatePicker 将自行向后滚动到“范围内”。
  • 如果您立即再次选择超出范围的日期,选择器将不会向后滚动,从而允许您选择超出范围的日期。
  • 如果选取器选择的日期超出范围,则其date属性将返回范围内最近的日期。
  • 你打电话时setDate: or setDate:animated:,如果您传递的日期与选择器返回的日期完全相同date属性,选择器将不执行任何操作。

考虑到这一点,您可以在选择器的值更改时调用以下方法,以防止您选择超出范围的日期:

- (IBAction) datePickerChanged:(id)sender {
    // When `setDate:` is called, if the passed date argument exactly matches the Picker's date property's value, the Picker will do nothing. So, offset the passed date argument by one second, ensuring the Picker scrolls every time.
    NSDate* oneSecondAfterPickersDate = [picker.date dateByAddingTimeInterval:1] ;
    if ( [picker.date compare:picker.minimumDate] == NSOrderedSame ) {
        NSLog(@"date is at or below the minimum") ;
        picker.date = oneSecondAfterPickersDate ;
    }
    else if ( [picker.date compare:picker.maximumDate] == NSOrderedSame ) {
        NSLog(@"date is at or above the maximum") ;
        picker.date = oneSecondAfterPickersDate ;
    }
}

以上if and else if部分几乎相同,但我将它们分开,以便我可以看到不同的 NSLog,也可以更好地调试。

这是工作项目在 GitHub 上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIDatePicker 设置最大日期 的相关文章

  • 如何表示Apple 发布的Mac OSX 崩溃报告?

    对于 iOS 崩溃报告 将崩溃报告拖放到管理器中就足够了 符号化 iPhone 应用程序崩溃报告 https stackoverflow com questions 1460892 symbolicating iphone app cras
  • 在 SWIFT 中发送本地通知

    我将此代码添加到我的第一个 ViewController 中 Step 1 Ask permission from User let center UNUserNotificationCenter current center reques
  • Cocos2d-x:如何将使用XCode开发的Cocos2d-x项目移植到Android(通过Eclipse)?

    我使用 XCode 开发了一个 Cocos2d X 应用程序 当我在 iOS 设备上从 XCode 启动它时 它可以完美运行 现在 我想把它移植到Android上 我的理解是 我必须找到一种方法将我的 XCode 项目 导入 Eclipse
  • 在 iOS 中发送音频文件和 JSON 字符串

    我正在尝试将音频文件和 JSON 字符串发送到 PHP 服务器 使用以下代码将发送 JSON 但文件到达时为空 如果我将 JSON 块放在音频块下方 文件将完全到达 但 JSON 为空 有什么想法吗 void sendFile NSStri
  • iOS 9.3 中的 KVO 被破坏

    这可能是 iOS 9 3 发行版 中的一个可怕的错误 添加单个观察者时 NSUserDefaults standardUserDefaults 我注意到响应方法 observeValueForKeyPath ofObject change
  • iOS 和 Firebase 自动续订订阅

    我的问题 我很难找到一种使用 Firebase 在 iOS 中安全管理自动续订订阅的方法 购买流程 User1 purchases a subscription 使用订阅标识符更新 Firebase 上 User1 的帐户 用于解锁内容 存
  • 在phonegap中播放本地声音

    我有一个 wav文件在我的www文件夹 我正在使用 jQuery 和以下代码 警报响起 但声音不播放 难道我做错了什么
  • iOS9 Sprite 套件问题

    一切都很顺利 直到我升级到 xCode 7 和 iOS 9 我当前的项目是一个 2D 平台游戏 自从升级以来 我就陷入了我们许多人似乎都面临的精灵套件错误 错误的困扰 我的问题是 每次游戏在模拟器或设备上运行时 所有精灵的 zPositio
  • iOS8 自签名证书已安装但仍不受信任

    由于我无法控制的原因 我需要使用自签名证书针对平台进行 iOS 开发 它是一个在 SAN 中具有特定 IP 地址的根证书 当证书安装在 OSX 系统帐户下时 所有浏览器现在将正常信任对给定 IP 地址的任何访问 通过电子邮件将同一证书发送到
  • 以编程方式更改自动布局约束后视图未更新

    事先我必须说 我实际上得到了我想要的可见效果 但不是以令人满意的方式 因为现在需要 打破 约束而不是正确更新 我有一个 ViewController 其中包含一个 UITableView 那个的高度tableView可以从 0 不可见 到它
  • 是否可以恢复我删除的 xcdatamodel 文件?

    我愚蠢地删除了它 我删除了其中包含不同版本的文件 我可以恢复到旧快照 但从那时起我就已经完成了工作 是否可以恢复到我的存档之一 或者我只能从那里提交 共享 我仍然可以运行该应用程序 但我需要对数据库进行更改 Xcode 将 xcdatamo
  • iOS UITableView:使用 CAGradientLayer 将背景颜色指定为渐变

    我刚刚开始使用 Xcode 4 3 中的主从视图模板 我试图更改主视图的背景颜色并将其设置为颜色渐变 这是我尝试过的 Colors m import Colors h implementation Colors UIColor naviga
  • 使用空格、制表符缩进以及多少个空格或制表符宽度[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我知道这更多的是一种编码风格 而不是一种正确的做事方式 但是 如果我遇到不同的缩进格式 我会有点沮丧 但是 我想听听不同的人对这些问题
  • Xcode 7.2 无法连接到装有 iOS 9.2 的 iPhone

    出于开发目的 我已经在我的 iPhone 5s 上安装了 iOS 9 2 beta 当然 我还安装了Xcode 7 2 beta 当我想在设备上运行应用程序扩展 键盘 时 该应用程序会正确构建 安装在 iPhone 上并启动 然而 然后我在
  • 在 Swift 中计算两个 CLLocation 点之间的方位角 [重复]

    这个问题在这里已经有答案了 我正在尝试计算仅 swift 代码中两个 CLLocation 点之间的方位 我遇到了一些困难 并假设这是一个非常简单的函数 堆栈溢出似乎没有列出任何内容 func d2r degrees Double gt D
  • -[_SwiftValueencodeWithCoder:]:无法识别的选择器发送到实例

    尝试使用 NSCoder 时出现错误 玩家 swift class Player NSObject NSCoding private var playerName String private var playerScore Int pri
  • Objective-C 中 NSURL 为 null 而 NSString 是正确的

    我有一个NSString包含一个 url 以及当我分配时NSURL与NSString NSURL 输出 空 这是因为url中有一些非法字符 导致NSURL不编码就无法读取NSString包含网址 NSString u incomingUrl
  • 出现错误:FT_Open_Face 失败:错误 2

    当我使用时出现以下错误CGContextDrawPDFPage context PDFPage 对于某些文件 有解决办法来解决这个问题吗 FT Open Face failed error 2 错误2看起来像errno2 这是 找不到文件
  • 如何从 App Store Connect 中删除自动创建的 macOS 应用程序

    I have an iOS app Recently macOS app automatically appeared in App Store Connect 我不打算在 macOS 上发布 iOS 应用程序 我怎样才能摆脱它 我打开了
  • Xcode 中的 Prefix.pch 文件是什么?

    许多开发人员正在向其中添加各种方便的宏Prefix pch 但我的问题是那是什么Prefix pch file 如果我删除它Prefix pch来自我的文件Xcode 那么我的应用程序会运行吗 或者会显示什么错误吗 或者它会在构建过程中崩溃

随机推荐

  • SetLayeredWindowAttributes 在 Windows 7 上不起作用

    我正在使用 SetLayeredWindowAttributes 使分层窗口的特定颜色透明 这在 Windows XP VISTA 上运行良好 但当我在 Windows 7 上使用相同的方法时 它不起作用 SetLayeredWindowA
  • Heroku 部署失败:[远程拒绝] master -> master(预接收挂钩拒绝):错误:无法推送一些引用

    我将现有应用程序复制到新存储库中 它在本地工作 部署原始工作 我正在使用 PHP Yii 和 Composer 我不知道什么fxp composer asset plugin is C Users Chloe workspace affil
  • 运行 make 时出错:缺少分隔符(您的意思是 TAB 而不是 8 个空格吗?)

    我正在尝试获取 PHPphar我的 Debian VM 上安装的命令行工具如何here描述 1 下载php src 我假设它在 tmp php src中 2 建立目录 tmp phar 3 保存this作为 tmp php src ext
  • Python 二进制转换为十六进制

    我正在尝试将 python 中的二进制文件 gzipped 协议缓冲区对象 转换为字符串转义方式的十六进制字符串 例如 xFA x1C 我都尝试过 repr
  • 如何动态组合 linq 查询?

    假设我有一个表 其中包含字符串中的格式化值 nvarchar 柱子 这些值应该是由某个 const 符号分隔的字符串 让它成为分号 例如 12 0 5 dog four values separated by a semi colon or
  • AppWidgetProvider:未调用 onEnabled 方法

    我有显示来自内容提供商的数据的小部件 我想知道内容提供商中的数据何时发生变化 据我所知 这样做的方法是 context getContentResolver registerContentObserver 但是当我添加小部件的第一个实例时
  • Swift 选项 - 从“x”到“x”的条件转换警告始终成功

    我想知道是否有办法关闭 避免 xcode 中的 黄色 警告if let NSUserDefaults构造其中键具有已知值的结构 例如 if let x NSUserDefaults standardUserDefaults integerF
  • 带投影的 CreateCriteria 不会选择所有列

    我的问题就像Grails 投影未返回所有属性且未分组 我有以下标准 def sharedDocumentsInstanceList SharedDocuments createCriteria list params createAlias
  • Angular HttpClient 方法不转换响应类型

    刚刚开始使用新的 HttpClient 但每当我拨打电话时 响应都不会使用提供的类型进行转换 我尝试了接口和类 现在我假设您只能使用接口来转换为响应 因为这是我们在文档中看到的唯一示例 我宁愿使用一个类在模型中包含一些辅助函数 有没有办法以
  • Git 工作流程 - 设置构建流程

    免责声明 我已经使用 Git 一段时间了 但仍然觉得它令人困惑 我正在为一个项目设置构建过程 但在更新 git 存储库时遇到问题 我在服务器上创建了存储库 假设为 C MyProject 我使用 SourceTree 将我的计算机连接到存储
  • 地图和过滤器内的 setState

    最近在学习react native中的map和filter方法 有一个问题 找到数组的特定行 带过滤器 后 如何仅设置该特定行的特定字段 我有 this state post id 0 author Duffy Duck delay 1 p
  • 使用 RTC 源代码管理获取已更改文件的文件名、位置和作者

    我正在尝试访问给定流的已更改文件的文件名 位置和作者 下面的代码是我到目前为止所拥有的 看看api文档 这似乎不可能 这可以使用 java api 或其他方法来实现吗 IChangeSetSearchCriteria c IChangeSe
  • 在 C# 中定义操作系统版本

    我有一个问题 我找不到在编译时检测 Windows 版本的方法 我的目的是创建一个依赖于接口的可执行文件 该接口仅在特定版本的Windows中定义 因此 为了制作可执行的跨 Windows 版本 我希望能够为特定 Windows 版本定义包
  • Python while 循环中的准确睡眠/延迟

    我有一个 while True 循环 它将变量发送到外部函数 然后使用返回的值 该发送 接收过程具有用户可配置的频率 该频率是从外部 ini 配置文件中保存和读取的 我尝试过 time sleep 1 Frequency 但考虑到其他地方使
  • Java 中的作用域规则

    有人可以帮助我理解 Java 中的作用域规则吗 这显然是无效的 int i 0 System out println i fine of course System out println i syntax error i被宣布在 而且在外
  • 访问动态分配数组的越界元素/无 SegFault

    我正在用 C 语言开发一个程序 它使用链表数组 原始哈希表 作为数据类型来表示某些日期信息 该数组有 12 个元素 对应于一年中的月份 每个月都有一个包含数据节点的链表 我开发了使用这种数据类型的模块 并且运行良好 后来我发现我正在访问越界
  • GCM 演示服务器向设备发送消息引发 401 错误

    与许多其他 java 和 android 新手一样 我尝试在 Windows 上运行 gcm 演示服务器和 gcm 演示客户端 使用 eclipse 运行虚拟设备 使用 tomcat 作为网络服务器 我在注册和取消注册设备方面没有任何问题
  • objectAtIndexedSubscript 在 IOS5 中可用吗?

    文档称它在 MacOS 1 08 中可用 那么故事是怎样的呢 iOS5呢 这是一个非常重要的选择器 因为 self 5 实际上会变成 self objectAtIndexedSubscript 5 除非我遗漏了一些东西 在 NSOrdere
  • 如何使用初始值设定项列表构造 std::array 对象? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用初始化器列表初始化成员数组 您可以使用初始值设定项列表构造 std array std array
  • UIDatePicker 设置最大日期

    我使用此代码来阻止用户超出我设置的限制 在视图中确实加载了 NSDate Date NSDate date DatePickerForDate setMinimumDate Date DatePickerForDate setMaximum