在Android上,当直接使用编辑器控件时,很清楚应该在哪里输入文本/数字数据:
在iOS上并不是很明显,我发现自己不得不猜测该按哪个位置才能使控件聚焦:
在控件之间共享的代码:
<Editor Grid.Row="1" Grid.Column="1"
Text="SomeTextHere"
VerticalOptions="Center"
Keyboard="Numeric"
HorizontalOptions="CenterAndExpand"
WidthRequest="68"
MinimumWidthRequest="68"
/>
如果需要的话,我不反对编写自定义控件,但是有没有更简单的方法?
请注意,我不想使用占位符文本。
答案 0 :(得分:2)
您可以使用 CustomRenderer 来实现它。
您可以在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;
}
}
}
}
如果您确实希望它在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中设置HeightRequest
和WidthRequest
。