Xamarin.ios mm:ss的输入元素,带有MonoTouch.Dialog?

Xamarin.ios mm:ss的输入元素,带有MonoTouch.Dialog?,xamarin.ios,monotouch.dialog,Xamarin.ios,Monotouch.dialog,我正在尝试MonoTouch和MonoTouch.Dialog,我想知道创建一个时间输入元素的最佳方法是什么。TimeElement似乎只支持小时和分钟 我对整个框架非常陌生,所以我想知道是否有一种方法可以创建一个带有:掩码的文本输入元素,并使用数字键盘填充分和秒 一个更酷的选择是使用一个部分,该部分会将用户带到一个视图,其中两个选择器视图会旋转几分钟和几秒钟,但我还不在那里 提前感谢您MonoTouch。Dialog的源代码可在Github上获得https://github.com/migue

我正在尝试MonoTouch和MonoTouch.Dialog,我想知道创建一个时间输入元素的最佳方法是什么。TimeElement似乎只支持小时和分钟

我对整个框架非常陌生,所以我想知道是否有一种方法可以创建一个带有:掩码的文本输入元素,并使用数字键盘填充分和秒

一个更酷的选择是使用一个部分,该部分会将用户带到一个视图,其中两个选择器视图会旋转几分钟和几秒钟,但我还不在那里


提前感谢您

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.csL1827

要获得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;
        }
    }

如果这还不够,您可以创建自己的选择器并返回它。

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.csL1827

要获得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;
        }
    }

如果这还不足以让您接近,您可以创建自己的选取器并返回它。

这是一个好主意,不幸的是,倒计时模式仍然显示两个选取器视图的小时和分钟。看起来我可能必须创建自己的选择器..UIDatePicker将UIPickerView作为子视图进行管理。你应该能够访问它并重命名微调器。非常有用,我马上就到了,一旦我让它工作,我会发布代码。在子视图中找到了包含小时字符串的UILabel,并更改了文本,但该文本未按预期在选择器中显示。你知道这个吗?UILabel hoursLabel=从pickerView.Subview中的v开始,其中v为UILabel&&Hours。等于UILabelv.Text,StringComparison.OrdinalIgnoreCase选择v.SingleOrDefault作为UILabel;hoursLabel.Text=分钟;可能取决于您何时执行此操作以及UIKit何时设置文本。但我真的建议您创建自己的选择器元素。这是个好主意,不幸的是,倒计时模式仍然显示两个选择器视图的小时和分钟。看起来我可能必须创建自己的选择器..UIDatePicker将UIPickerView作为子视图进行管理。你应该能够访问它并重命名微调器。非常有用,我马上就到了,一旦我让它工作,我会发布代码。在子视图中找到了包含小时字符串的UILabel,并更改了文本,但该文本未按预期在选择器中显示。你知道这个吗?UILabel hoursLabel=从pickerView.Subview中的v开始,其中v为UILabel&&Hours。等于UILabelv.Text,StringComparison.OrdinalIgnoreCase选择v.SingleOrDefault作为UILabel;hoursLabel.Text=分钟;可能取决于您何时执行此操作以及UIKit何时设置文本。但我真的建议您创建自己的选择器元素。应该更容易、更灵活。