Лучший подход для показа / скрытия функции переключения паролей в традиционном подходе Xamarin - PullRequest
1 голос
/ 07 октября 2019

Мы работаем над функцией переключения паролей в традиционном подходе Xamarin. Как лучше всего это осуществить? Это в Xamarin.iOS &. Droid или в Xamarin.Core?

Если это в Xamarin.Core, можете ли вы сообщить нам об этом процессе. Это преобразователи значений?

Заранее спасибо.

1 Ответ

1 голос
/ 08 октября 2019

Мы всегда используем пользовательские элементы управления для отображения / скрытия пароля при вводе пароля с использованием эффектов.

Android:

Создайте элемент управления вручную в методе «OnDrawableTouchListener», гдемы добавляем значки ShowPass и HidePass в элемент управления вводом, меняем их на основе действия касания пользователя и прикрепляем его при вызове эффекта, который будет запущен при добавлении эффекта в элемент управления.

public class OnDrawableTouchListener : Java.Lang.Object, Android.Views.View.IOnTouchListener  
{  
    public bool OnTouch(Android.Views.View v, MotionEvent e)  
    {  
        if (v is EditText && e.Action == MotionEventActions.Up)  
        {  
            EditText editText = (EditText)v;  
            if (e.RawX >= (editText.Right - editText.GetCompoundDrawables()[2].Bounds.Width()))  
            {  
                if (editText.TransformationMethod == null)  
                {  
                    editText.TransformationMethod = PasswordTransformationMethod.Instance;  
                    editText.SetCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, Resource.Drawable.ShowPass, 0);  
                }  
                else  
                {  
                    editText.TransformationMethod = null;  
                    editText.SetCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, Resource.Drawable.HidePass, 0);  
                }  

                return true;  
            }  
        }  

        return false;  
    }  
}  

Результат:

enter image description here

IOS:

Создать элемент управления вручную в 'ConfigureControl 'метод, в котором мы добавляем ShowPass и HidePassicons в элемент управления вводом, изменяя их на основе действий касания пользователя;и присоединение его к вызову эффекта, который будет запущен при добавлении эффекта к элементу управления.

private void ConfigureControl()  
    {  
        if (Control != null)  
        {  
            UITextField vUpdatedEntry = (UITextField)Control;  
            var buttonRect = UIButton.FromType(UIButtonType.Custom);  
            buttonRect.SetImage(new UIImage("ShowPass"), UIControlState.Normal);  
            buttonRect.TouchUpInside += (object sender, EventArgs e1) =>  
            {  
                if (vUpdatedEntry.SecureTextEntry)  
                {  
                    vUpdatedEntry.SecureTextEntry = false;  
                    buttonRect.SetImage(new UIImage("HidePass"), UIControlState.Normal);  
                }  
                else  
                {  
                    vUpdatedEntry.SecureTextEntry = true;  
                    buttonRect.SetImage(new UIImage("ShowPass"), UIControlState.Normal);  
                }  
            };  

            vUpdatedEntry.ShouldChangeCharacters += (textField, range, replacementString) =>  
            {  
                string text = vUpdatedEntry.Text;  
                var result = text.Substring(0, (int)range.Location) + replacementString + text.Substring((int)range.Location + (int)range.Length);  
                vUpdatedEntry.Text = result;  
                return false;  
            };  


            buttonRect.Frame = new CoreGraphics.CGRect(10.0f, 0.0f, 15.0f, 15.0f);  
            buttonRect.ContentMode = UIViewContentMode.Right;  

            UIView paddingViewRight = new UIView(new System.Drawing.RectangleF(5.0f, -5.0f, 30.0f, 18.0f));  
            paddingViewRight.Add(buttonRect);  
            paddingViewRight.ContentMode = UIViewContentMode.BottomRight;  


            vUpdatedEntry.LeftView = paddingViewRight;  
            vUpdatedEntry.LeftViewMode = UITextFieldViewMode.Always;  

            Control.Layer.CornerRadius = 4;  
            Control.Layer.BorderColor = new CoreGraphics.CGColor(255, 255, 255);  
            Control.Layer.MasksToBounds = true;  
            vUpdatedEntry.TextAlignment = UITextAlignment.Left;  
        }  

    }  

Результат:

enter image description here

Для получения более подробной информации, пожалуйста, обратитесь к статье ниже. https://www.c -sharpcorner.com / article / xamarin-forms-tip-Imple-Imple-Show-Hide-Password-Using-Effects /

Вы можете загрузить исходный файл из GitHub для справки,https://github.com/techierathore/ShowHidePassEx.git

...