设置用户输入的本地通知时间

Posted

技术标签:

【中文标题】设置用户输入的本地通知时间【英文标题】:set user entered time for local notification 【发布时间】:2013-11-15 06:51:26 【问题描述】:

我正在处理 loacl 通知通知成功。但我不想为来自选择器的通知设置触发时间我想设置用户想要的通知触发时间。我已经给文本字段输入时间并希望根据用户时间设置firedate。

假设用户在下午 1 点输入,然后通知在今天下午 1 点到来

下面是我的代码--

NSCalendar *calendar = [NSCalendar currentCalendar]; // gets default calendar
NSDateComponents *components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:[NSDate date]]; // gets the year, month, day,hour and minutesfor today's date
[components setHour:txtStartTime.text];
//   [components setMinute:12];

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.fireDate = [calendar dateFromComponents:components];
localNotification.timeZone = [NSTimeZone localTimeZone];
localNotification.alertBody = txtSubjectName.text;
localNotification.alertAction = @"Lecture Notification";

[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
    [self dismissViewControllerAnimated:YES completion:nil];

【问题讨论】:

【参考方案1】:

您可以使用NSDateFormatter 将字符串转换为NSDate,然后将该NSDate 用作fireDate。但是,只有当用户完全按照预期输入日期时,它才能正常工作。以下是其工作原理的代码示例:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd hh:mm:ss a"];
NSDate *myDate = [df dateFromString: myDateAsAStringValue];

这是一个网站,展示了可用的不同日期格式模式,因此您可以创建自己的输入样式:http://waracle.net/iphone-nsdateformatter-date-formatting-table/

您应该使用UIDatePicker 让用户轻松输入日期和时间。这是一个解释如何使用它的教程:http://www.edumobile.org/iphone/iphone-programming-tutorials/add-datepicker-programmatically-and-display-date-in-iphone/

【讨论】:

以上是关于设置用户输入的本地通知时间的主要内容,如果未能解决你的问题,请参考以下文章

输入 applicationDidBecomeActive 时本地通知不起作用

如何设置本地通知以每 48 小时通知用户一次?

用户选择的 swift 3 重复间隔中的本地通知

设置特定日期和时间的本地通知 swift 3

通知用户 Dash 中的无效输入

怎么设置局域网共享不用输入用户名和密码