【发布时间】:2020-03-16 01:51:27
【问题描述】:
我在网上找到了一个自定义渲染器,但是有一个错误。有谁知道如何进行日期时间控制?目前我正在使用单独的日期选择器和时间选择器,但我希望将它结合起来。
我将在下面发布我从另一篇文章中找到的代码。这是帖子Xamarin Forms date and time picker的链接
using System;
using Foundation;
using Test;
using Test.Droid;
using UIKit;
using ObjCRuntime;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly:ExportRenderer(typeof(MyPicker), typeof(MyPickerRenderer))]
namespace Test.Droid
{
public class MyPickerRenderer : PickerRenderer
{
string SelectedValue;
[Obsolete]
public MyPickerRenderer()
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
if (Control != null)
{
SetTimePicker();
}
}
void SetTimePicker()
{
UIDatePicker picker = new UIDatePicker
{
Mode = UIDatePickerMode.DateAndTime
};
picker.SetDate(NSDate.Now, true);
picker.AddTarget(this, new Selector("DateChange:"), UIControlEvent.ValueChanged);
Control.InputView = picker;
UIToolbar toolbar = (UIToolbar)Control.InputAccessoryView;
UIBarButtonItem done = new UIBarButtonItem("Done", UIBarButtonItemStyle.Done, (object sender, EventArgs click) =>
{
Control.Text = SelectedValue;
toolbar.RemoveFromSuperview();
picker.RemoveFromSuperview();
Control.ResignFirstResponder();
MessagingCenter.Send<Object, string>(this, "pickerSelected", SelectedValue);
});
UIBarButtonItem empty = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace, null);
toolbar.Items = new UIBarButtonItem[] { empty, done };
}
[Export("DateChange:")]
void DateChange(UIDatePicker picker)
{
NSDateFormatter formatter = new NSDateFormatter();
formatter.DateFormat = "MM-dd HH:mm aa"; //you can set the format as you want
Control.Text = formatter.ToString(picker.Date);
SelectedValue = formatter.ToString(picker.Date);
MessagingCenter.Send<Object, string>(this, "pickerSelected", SelectedValue);
}
}
}
【问题讨论】:
-
“有一个错误” - 如果您告诉我们具体的错误是什么,将会非常有帮助。
-
我在 android 而不是 IOS 上使用,所以我不确定这是否会导致错误。我得到的错误是“严重性代码描述项目文件行抑制状态错误 CS1061 'EditText' 不包含'ResignFirstResponder' 的定义并且没有可访问的扩展方法'ResignFirstResponder' 接受'EditText' 类型的第一个参数可以找到(是您缺少 using 指令或程序集引用?)"
标签: xaml xamarin xamarin.forms