设置键盘类型(例如Url-Keyboard)和'KeyboardFlags'

时间:2018-01-25 21:15:59

标签: c# xamarin xamarin.forms

根据Xamrin,我们可以将条目的键盘设置为Url键盘。它还告诉我们可以设置KeyboardFlags。

但我们如何设置两者?以任何方式影响键盘的唯一方法似乎是将其设置为某些键盘。似乎没有办法改变现有的键盘。

1 个答案:

答案 0 :(得分:1)

似乎我们无法从Xamarin.Forms中获得这两个选项。相反,我们可以通过自定义渲染器访问本机视图来实现它。

从Xamarin.Forms中的Entry定义派生类:

public class CustomEntry : Entry
{
}

Android自定义条目渲染器:

[assembly: ExportRenderer(typeof(CustomEntry), typeof(CustomEntryRenderer))]

namespace MyProject.Android.Renderers
{
    public class CustomEntryRenderer : EntryRenderer
    {
        public CustomEntryRenderer(Context context) : base(context)
        {
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);
            var element = Element as CustomEntry;
            if (element == null || Control == null) return;

            Control.InputType = InputTypes.TextVariationUri | InputTypes.TextFlagCapWords;
        }

    }
}

iOS自定义条目渲染器:

[assembly: ExportRenderer(typeof(CustomEntry), typeof(CustomEntryRenderer))]

namespace MyProject.iOS.Renderers
{
    public class CustomEntryRenderer : EntryRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
        {
            base.OnElementChanged(e);
            var element = Element as CustomEntry;
            if (Control == null || element == null) return;

            Control.AutocapitalizationType = UITextAutocapitalizationType.Words;       
            Control.KeyboardType = UIKeyboardType.Url;
        }
    }
}