{"id":13712049,"url":"https://github.com/lassana/XamarinFormsPinView","last_synced_at":"2025-05-06T21:33:07.612Z","repository":{"id":72789219,"uuid":"66702970","full_name":"lassana/XamarinFormsPinView","owner":"lassana","description":"PIN keyboard for Xamarin.Forms.","archived":false,"fork":false,"pushed_at":"2018-10-08T16:24:07.000Z","size":2113,"stargazers_count":81,"open_issues_count":5,"forks_count":18,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-05-13T00:35:56.201Z","etag":null,"topics":["netstandard","netstandard20","pinview","xamarin","xamarin-forms","xamarin-library","xamarin-plugin"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lassana.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-08-27T07:54:12.000Z","updated_at":"2024-03-21T11:46:09.000Z","dependencies_parsed_at":"2023-06-03T03:30:09.625Z","dependency_job_id":null,"html_url":"https://github.com/lassana/XamarinFormsPinView","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lassana%2FXamarinFormsPinView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lassana%2FXamarinFormsPinView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lassana%2FXamarinFormsPinView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lassana%2FXamarinFormsPinView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lassana","download_url":"https://codeload.github.com/lassana/XamarinFormsPinView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252772293,"owners_count":21801902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["netstandard","netstandard20","pinview","xamarin","xamarin-forms","xamarin-library","xamarin-plugin"],"created_at":"2024-08-02T23:01:14.412Z","updated_at":"2025-05-06T21:33:07.158Z","avatar_url":"https://github.com/lassana.png","language":"C#","readme":"# PIN keyboard for Xamarin.Forms\n\n\u003cpre\u003e\u003ccode\u003e\u003cimg src=\"ios.mov.gif\" height=\"auto\" width=\"220px\"\u003e \u003cimg src=\"android.mov.gif\" height=\"auto\" width=\"220px\"\u003e\u003c/code\u003e\u003c/pre\u003e\n\n## Usage\n\n1. Add the following NuGet package: https://www.nuget.org/packages/FormsPinView/ [![NuGet](https://img.shields.io/nuget/v/FormsPinView.svg?label=NuGet)](https://www.nuget.org/packages/FormsPinView/) \n    \n    _OR_\n    \n    add [FormsPinView.Core](FormsPinView/FormsPinView.Core), [FormsPinView.iOS](FormsPinView/FormsPinView.iOS), and [FormsPinView.Droid](FormsPinView/FormsPinView.Droid) to your solution.\n1. Initialize iOS and Android renderers:\n\n        // iOS:\n        public override bool FinishedLaunching(UIApplication app, NSDictionary options)\n        {\n            ...\n            global::Xamarin.Forms.Forms.Init();\n            PinItemViewRenderer.Init();\n        }\n        \n        // Android:\n        protected override void OnCreate(Bundle bundle)\n        {\n            ...\n            global::Xamarin.Forms.Forms.Init(this, bundle);\n            PinItemViewRenderer.Init();\n        }\n\n1. Add `PinView` to your page:\n        \n        ...\n        xmlns:local=\"clr-namespace:FormsPinView.Core;assembly=FormsPinView.Core\"\n        ...\n            \u003clocal:PinView\n                HorizontalOptions=\"CenterAndExpand\"\n                VerticalOptions=\"CenterAndExpand\"\n                TargetPinLength=\"4\"\n                Validator=\"{Binding ValidatorFunc}\"\n                Success=\"Handle_Success\" /\u003e\n        \n1. `PinView` is MVVM-ready, so you can bind the following properties:\n\n| Property | Type | Description | Default | Required |\n|---------------------|---------------------------|----------------------------------------------------------------------------------------------|---------|----------|\n| `Validator` | `Func\u003cIList\u003cchar\u003e, bool\u003e` | Function to check entered PIN | `null` | **Yes** |\n| `PinLength` | `int` | The PIN length | 4 | No |\n| `SuccessCommand` | `ICommand` | Invoked when the correct PIN is entered | `null` | No |\n| `ErrorCommand` | `ICommand` | Invoked when an incorrect PIN is entered | `null` | No |\n| `ClearAfterSuccess` | `bool` | Indicates whether the entered PIN should be cleaned or not after it was confirmed as correct | true | No |\n| `BorderColor` | `Color` | View tint color. | Gray | No |\n| `Color` | `Color` | View basic color. | Black | No |\n| `RippleColor` | `Color` | View touch-effect color. | Gray | No |\n\n## TODO\n\n- [x] Use `AbsoluteLayout` instead of `Grid`, no XAML\n- [x] Colorizing\n- [ ] Rowspacing \u0026 Colspacing\n- [ ] Buttons are Circle or Square\n- [ ] Font size\n- [ ] Button background\n- [ ] Buttom border (size)\n- [ ] Randomizing the numbers order\n- [ ] CI builds\n- [ ] UI tests\n\n## Changelog\n\n### 2.1.0-pre1\n\n- Root container changed from `Grid` to `AbsoluteLayout`\n- Allowed to configure view colors: see `BorderColor`, `Color`, and `RippleColor`\n- Removed `EmptyCircleImage` and `FilledCircleImage` properties\n\n### 2.0.0\n\n- Released *2.0.0-pre1* as a stable version\n\n### 2.0.0-pre1\n\n- Removed `Title` property: now you have to implement it manually in your UI\n- Refactored the ViewModel API (splitted into bindable properties)\n- Namespaces changed from `PCL` to `Core`.\n- Allowed to change the PIN length dynamically as well as PIN symbols\n\n### 1.1.1\n\n- Released *1.1.1-pre1* as a stable version\n\n### 1.1.1-pre1\n\n- Fixed `NSInternalInconsistencyException` crash on iOS\n\n### 1.1.0\n\n- .NET Standard 2.0 is now supported\n- PCL support is dropped\n\n### 1.0.1\n\n- Changed PCL profile to 259\n- Added F# sample\n\n### 1.0.0\n\n- Intilial release \n\n## License\n\nBSD 2-Clause.\n","funding_links":[],"categories":["UI"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flassana%2FXamarinFormsPinView","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flassana%2FXamarinFormsPinView","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flassana%2FXamarinFormsPinView/lists"}