PIN keyboard for Xamarin.Forms

October 8, 2018 ยท View on GitHub

 

Usage

  1. Add the following NuGet package: https://www.nuget.org/packages/FormsPinView/ NuGet

    OR

    add FormsPinView.Core, FormsPinView.iOS, and FormsPinView.Droid to your solution.

  2. Initialize iOS and Android renderers:

     // iOS:
     public override bool FinishedLaunching(UIApplication app, NSDictionary options)
     {
         ...
         global::Xamarin.Forms.Forms.Init();
         PinItemViewRenderer.Init();
     }
     
     // Android:
     protected override void OnCreate(Bundle bundle)
     {
         ...
         global::Xamarin.Forms.Forms.Init(this, bundle);
         PinItemViewRenderer.Init();
     }
    
  3. Add PinView to your page:

     ...
     xmlns:local="clr-namespace:FormsPinView.Core;assembly=FormsPinView.Core"
     ...
         <local:PinView
             HorizontalOptions="CenterAndExpand"
             VerticalOptions="CenterAndExpand"
             TargetPinLength="4"
             Validator="{Binding ValidatorFunc}"
             Success="Handle_Success" />
     
    
  4. PinView is MVVM-ready, so you can bind the following properties:

PropertyTypeDescriptionDefaultRequired
ValidatorFunc<IList<char>, bool>Function to check entered PINnullYes
PinLengthintThe PIN length4No
SuccessCommandICommandInvoked when the correct PIN is enterednullNo
ErrorCommandICommandInvoked when an incorrect PIN is enterednullNo
ClearAfterSuccessboolIndicates whether the entered PIN should be cleaned or not after it was confirmed as correcttrueNo
BorderColorColorView tint color.GrayNo
ColorColorView basic color.BlackNo
RippleColorColorView touch-effect color.GrayNo

TODO

  • Use AbsoluteLayout instead of Grid, no XAML
  • Colorizing
  • Rowspacing & Colspacing
  • Buttons are Circle or Square
  • Font size
  • Button background
  • Buttom border (size)
  • Randomizing the numbers order
  • CI builds
  • UI tests

Changelog

2.1.0-pre1

  • Root container changed from Grid to AbsoluteLayout
  • Allowed to configure view colors: see BorderColor, Color, and RippleColor
  • Removed EmptyCircleImage and FilledCircleImage properties

2.0.0

  • Released 2.0.0-pre1 as a stable version

2.0.0-pre1

  • Removed Title property: now you have to implement it manually in your UI
  • Refactored the ViewModel API (splitted into bindable properties)
  • Namespaces changed from PCL to Core.
  • Allowed to change the PIN length dynamically as well as PIN symbols

1.1.1

  • Released 1.1.1-pre1 as a stable version

1.1.1-pre1

  • Fixed NSInternalInconsistencyException crash on iOS

1.1.0

  • .NET Standard 2.0 is now supported
  • PCL support is dropped

1.0.1

  • Changed PCL profile to 259
  • Added F# sample

1.0.0

  • Intilial release

License

BSD 2-Clause.