protected virtual void InitializeFormFields()
        {
            var userField     = Fields.SingleOrDefault(f => f.Key == "username");
            var passwordField = Fields.SingleOrDefault(f => f.Key == "password");

            if (userField == null)
            {
                userField = new FormAuthenticatorField
                {
                    FieldType   = FormAuthenticatorFieldType.PlainText,
                    Key         = "username",
                    Title       = "Username",
                    Placeholder = "Username",
                    Value       = ""
                };

                Fields.Add(userField);
            }

            if (passwordField == null)
            {
                passwordField = new FormAuthenticatorField
                {
                    FieldType   = FormAuthenticatorFieldType.Password,
                    Key         = "password",
                    Title       = "Password",
                    Placeholder = "Password",
                    Value       = ""
                };

                Fields.Add(passwordField);
            }
        }
            public FieldCell(FormAuthenticatorField field, nfloat fieldXPosition, Action handleReturn)
                : base(UITableViewCellStyle.Default, "Field")
            {
                SelectionStyle = UITableViewCellSelectionStyle.None;

                TextLabel.Text = field.Title;

                var hang = 3;
                var h    = FieldFont.PointSize + hang;

                var cellSize = Frame.Size;

                TextField = new UITextField(new CGRect(
                                                fieldXPosition, (cellSize.Height - h) / 2,
                                                cellSize.Width - fieldXPosition - 12, h))
                {
                    Font             = FieldFont,
                    Placeholder      = field.Placeholder,
                    Text             = field.Value,
                    TextColor        = FieldColor,
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,

                    SecureTextEntry = (field.FieldType == FormAuthenticatorFieldType.Password),

                    KeyboardType = (field.FieldType == FormAuthenticatorFieldType.Email) ?
                                   UIKeyboardType.EmailAddress :
                                   UIKeyboardType.Default,

                    AutocorrectionType = (field.FieldType == FormAuthenticatorFieldType.PlainText) ?
                                         UITextAutocorrectionType.Yes :
                                         UITextAutocorrectionType.No,

                    AutocapitalizationType = UITextAutocapitalizationType.None,

                    ShouldReturn = delegate {
                        handleReturn();
                        return(false);
                    },
                };
                TextField.EditingDidEnd += delegate {
                    field.Value = TextField.Text;
                };

                ContentView.AddSubview(TextField);
            }
			public FieldCell (FormAuthenticatorField field, nfloat fieldXPosition, Action handleReturn)
				: base (UITableViewCellStyle.Default, "Field")
			{
				SelectionStyle = UITableViewCellSelectionStyle.None;

				TextLabel.Text = field.Title;

				var hang = 3;
				var h = FieldFont.PointSize + hang;

				var cellSize = Frame.Size;

				TextField = new UITextField (new CGRect (
					fieldXPosition, (cellSize.Height - h)/2, 
					cellSize.Width - fieldXPosition - 12, h)) {

					Font = FieldFont,
					Placeholder = field.Placeholder,
					Text = field.Value,
					TextColor = FieldColor,
					AutoresizingMask = UIViewAutoresizing.FlexibleWidth,

					SecureTextEntry = (field.FieldType == FormAuthenticatorFieldType.Password),

					KeyboardType = (field.FieldType == FormAuthenticatorFieldType.Email) ?
						UIKeyboardType.EmailAddress :
						UIKeyboardType.Default,

					AutocorrectionType = (field.FieldType == FormAuthenticatorFieldType.PlainText) ?
						UITextAutocorrectionType.Yes :
						UITextAutocorrectionType.No,
					
					AutocapitalizationType = UITextAutocapitalizationType.None,

					ShouldReturn = delegate {
						handleReturn ();
						return false;
					},
				};
				TextField.EditingDidEnd += delegate {
					field.Value = TextField.Text;
				};

				ContentView.AddSubview (TextField);
			}