You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS EKCalendarChooser移除Add Calendar按钮及修改相关按钮颜色问题

问题1:是否可以移除Add Calendar按钮?
  • 苹果官方未提供公开API支持直接移除EKCalendarChooser自带的Add Calendar按钮,该按钮的显隐由系统组件内部控制。你尝试修改hidesBottomBarWhenPushed、tabBarItem的方案不生效,是因为这个按钮不属于标签栏组件,是EKCalendarChooser自带的底部工具栏按钮。
  • 若一定要强制移除,只能通过遍历视图层级查找对应按钮并隐藏的非公开方案实现,该方案存在系统版本适配风险,且可能导致App Store审核被拒,不推荐使用。
  • 更稳妥的替代方案是自定义日历选择页面,自行读取eventStore中的日历列表进行展示,可100%控制页面元素。
问题2:如何修改Add Calendar控制器上显示的Cancel按钮的颜色?

你可以通过临时修改UINavigationBar的全局外观实现该需求:在present日历选择器前设置全局导航栏tintColor为橙色,在日历选择器关闭后恢复原有的全局配置即可,代码示例如下:

  1. 首先在当前控制器声明属性保存原有全局色调:
var originalNavTintColor: UIColor?
  1. 弹出日历选择器前修改全局配置:
// 保存原有全局导航栏tintColor
originalNavTintColor = UINavigationBar.appearance().tintColor
// 临时设置全局导航栏tint为橙色
UINavigationBar.appearance().tintColor = .orange

// 原有创建CalendarChooser逻辑
let calendarChooser = EKCalendarChooser(selectionStyle: .single,
                                        displayStyle: .writableCalendarsOnly,
                                        entityType: .event,
                                        eventStore: eventStore)
calendarChooser.showsDoneButton = true
calendarChooser.showsCancelButton = true
calendarChooser.delegate = self // 绑定代理处理关闭事件
let navigationController = UINavigationController(rootViewController: calendarChooser)
navigationController.view.tintColor = .orange
self.present(navigationController, animated: true, completion: nil)
  1. 在EKCalendarChooserDelegate回调中恢复原有全局配置:
func calendarChooserDidFinish(_ calendarChooser: EKCalendarChooser) {
    // 恢复原有全局导航栏色调
    UINavigationBar.appearance().tintColor = originalNavTintColor
    dismiss(animated: true)
}

func calendarChooserDidCancel(_ calendarChooser: EKCalendarChooser) {
    // 恢复原有全局导航栏色调
    UINavigationBar.appearance().tintColor = originalNavTintColor
    dismiss(animated: true)
}

该方案会作用于所有当前弹出的系统导航栏组件,包括Add Calendar弹窗的导航按钮,可将其Cancel按钮统一修改为橙色。

内容的提问来源于stack exchange,提问作者geohei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 19:54:04