iOS上的Xamarin.Forms编辑器控件需要一些东西来标记应该在哪里输入数字

时间:2019-07-26 07:26:01

标签: xamarin.forms xamarin.android xamarin.ios

在Android上,当直接使用编辑器控件时,很清楚应该在哪里输入文本/数字数据:

Xamarin.Forms Android Editor Control

在iOS上并不是很明显,我发现自己不得不猜测该按哪个位置才能使控件聚焦:

Xamarin.Forms iOS Editor Control

在控件之间共享的代码:

<Editor Grid.Row="1" Grid.Column="1" 
                    Text="SomeTextHere"
                    VerticalOptions="Center"
                    Keyboard="Numeric"
                    HorizontalOptions="CenterAndExpand"
                    WidthRequest="68"
                    MinimumWidthRequest="68"
                    />

如果需要的话,我不反对编写自定义控件,但是有没有更简单的方法?

请注意,我不想使用占位符文本。

1 个答案:

答案 0 :(得分:2)

您可以使用 CustomRenderer 来实现它。

解决方案1 ​​

您可以在iOS中设置编辑器的边框。

using Foundation;
using UIKit;
using CoreGraphics;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

using xxx.iOS;


[assembly:ExportRenderer(typeof(Editor),typeof(MyEditorRenderer))]
namespace xxx.iOS
{
    public class MyEditorRenderer:EditorRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
        {
            base.OnElementChanged(e);

            if(Control!=null)
            {

               Control.Layer.MasksToBounds = true;
               Control.Layer.BorderWidth = 1.0f;
               Control.Layer.BorderColor = UIColor.Black.CGColor;

            }

        }
    }
}

解决方案2

如果您确实希望它在Android中显示(只有下划线)

using Foundation;
using UIKit;
using CoreGraphics;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

using xxx.iOS;


[assembly:ExportRenderer(typeof(Editor),typeof(MyEditorRenderer))]
namespace xxx.iOS
{
    public class MyEditorRenderer:EditorRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Editor> e)
        {
            base.OnElementChanged(e);

            if(Control!=null)
            {

               UIView lineView = new UIView() {

                    Frame = new CGRect(0,Element.HeightRequest-1,Element.WidthRequest, 1),
                    BackgroundColor = UIColor.Black,

                };

                Control.AddSubview(lineView);

            }

        }
    }
}

您需要在Xaml中设置HeightRequestWidthRequest