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

Xamarin iOS开发iPhone12/13 mini模拟器时间选择器Done工具栏不显示是否为Bug

问题根因
  • 该问题并非iPhone 12 mini/13 mini的系统Bug,是代码中对自适应弹性控件硬设固定宽度导致的小屏适配异常:
    你给UIBarButtonSystemItem.FlexibleSpace类型的控件手动设置了Width = MainWidth - 50,而iPhone 12/13 mini的屏幕宽度比其他型号更小,固定宽度超过了工具栏的可用空间,会导致按钮布局溢出、无法正常显示。
修复方案
  1. 移除弹性空间的固定宽度设置:FlexibleSpace的作用就是自动填充工具栏内的剩余空白区域,不需要手动指定宽度,删除对应赋值代码即可适配所有屏幕尺寸。
  2. 调整工具栏方法调用顺序:先给工具栏设置完所有按钮项,再调用SizeToFit()方法,避免高度计算异常。
修改后的核心代码片段
// 原flexibleSpace代码移除Width设置
var flexibleSpace = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace, target: null, action: null);

if (objUITextField.AccessibilityValue == "endtime")
{
    UIBarButtonItem clearButton = new UIBarButtonItem("Clear", UIBarButtonItemStyle.Plain,
                                                 (s, e) =>
                                                 {
                                                     //code
                                                 });
    toolbar.SetItems(new UIBarButtonItem[] { doneButton, flexibleSpace, clearButton, cancelButton }, true);
}
else
{
    toolbar.SetItems(new UIBarButtonItem[] { doneButton, flexibleSpace, cancelButton }, true);
}
// 调整SizeToFit位置,放在设置items之后
toolbar.SizeToFit();

//Display the toolbar over the pickers
objUITextField.InputAccessoryView = toolbar;
objUITextField.InputView = picker;
picker.SizeToFit(); //Add this in ios14
picker.SetNeedsDisplay();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:15:04