【问题标题】:Entry element for mm:ss with MonoTouch.Dialog?带有 MonoTouch.Dialog 的 mm:ss 的入口元素?
【发布时间】:2012-11-02 03:54:47
【问题描述】:

我正在尝试 MonoTouch 和 MonoTouch.Dialog,并且想知道创建仅用于分钟和秒的时间条目元素的最佳方法是什么。 TimeElement 似乎只支持小时和分钟。

我对整个框架很陌生,所以我想知道是否有办法创建一个带有“##:##”掩码的文本输入元素并使用数字键盘来填充分钟和秒?

一个更酷的选择是使用一个部分,将用户带到具有两个“选择器视图”(旋转轮子)的视图,持续几分钟和几秒钟,但我还没有。

提前致谢

【问题讨论】:

    标签: xamarin.ios monotouch.dialog


    【解决方案1】:

    MonoTouch.Dialog 的源代码可在 Github (https://github.com/migueldeicaza/MonoTouch.Dialog/tree/master/MonoTouch.Dialog) 上获得。

    在那里,看看 DateElement 的实现(https://github.com/migueldeicaza/MonoTouch.Dialog/blob/master/MonoTouch.Dialog/Elements.cs#L1827)

    要获得TimeElementMinutesSeconds,您所要做的就是(未经测试)滥用倒计时模式。它将提供小时和分钟,但您可以将它们解释为分钟和秒:

    public class TimeElementMinutesSeconds : DateTimeElement {
            public TimeElementMinutesSeconds (string caption, DateTime date) : base (caption, date)
            {
            }
    
            public override string FormatDate (DateTime dt)
            {
                DateTime dtLocal = GetDateWithKind (dt).ToLocalTime ();
    return string.Format("{0:##}:{1:##}"dtLocal.Hours, dtLocal.Minutes);
            }
    
            public override UIDatePicker CreatePicker ()
            {
                var picker = base.CreatePicker ();
                picker.Mode = UIDatePickerMode.CountDownTimer;
                return picker;
            }
        }
    

    如果这不能让您足够接近,您可以创建自己的选择器并将其返回。

    【讨论】:

    • 这是个好主意,不幸的是,CountDownTimer 模式仍然为两个选择器视图显示“小时”和“分钟”。看起来我可能必须创建自己的选择器..
    • UIDatePicker 将 UIPickerView 作为子视图进行管理。您应该能够访问它并重命名微调器。
    • 非常有帮助,我几乎在那里,一旦我开始工作就会发布代码。在子视图中找到包含“小时”字符串的 UILabel 并更改了文本,但文本在选取器中未按预期显示。对这个有任何想法吗? UILabel hoursLabel = (from v in pickerView.Subviews where (v is UILabel) && "Hours".Equals (((UILabel)v).Text, StringComparison.OrdinalIgnoreCase) select v).SingleOrDefault () as UILabel; hoursLabel.Text = "分钟";
    • 可能取决于 您何时执行此操作 以及 UIKit 何时设置文本。但我真的建议您创建自己的选择器元素。应该更容易、更灵活。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多