From c7df85937f73fb347ee0b19e9c052d2d00a6df6c Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 18 九月 2020 13:58:19 +0800
Subject: [PATCH] 新版本
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/VerificationCodeControl.cs | 86 +++++++++++++++++++++++++++++++++++++++++-
1 files changed, 83 insertions(+), 3 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/VerificationCodeControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/VerificationCodeControl.cs
index 6b26088..1ee238d 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/VerificationCodeControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/CompoundControls/VerificationCodeControl.cs
@@ -7,7 +7,7 @@
/// <summary>
/// 楠岃瘉鐮佹帶浠�
/// </summary>
- public class VerificationCodeControl : FrameLayout
+ public class VerificationCodeControl : NormalFrameLayout
{
#region 鈻� 鍙橀噺澹版槑___________________________
@@ -20,9 +20,13 @@
/// </summary>
public Action<string> FinishInputEvent = null;
/// <summary>
- /// 瀵嗙爜杈撳叆绫诲瀷
+ /// 瀵嗙爜杈撳叆绫诲瀷(瀹冧笌NumberInputOnly涓嶅叡瀛�)
/// </summary>
public bool SecureTextEntry = false;
+ /// <summary>
+ /// 杈撳叆閿洏鎸囧畾涓烘暟瀛楅敭鐩�(榛樿涓簍rue,瀹冧笌SecureTextEntry涓嶅叡瀛�)
+ /// </summary>
+ public bool NumberInputOnly = true;
/// <summary>
/// 楠岃瘉鐮侀暱搴�
/// </summary>
@@ -64,7 +68,7 @@
frameCode.X = i * Application.GetRealWidth(115 + 49);
frameCode.Width = Application.GetRealWidth(115);
frameCode.Height = Application.GetRealHeight(104);
- frameCode.Radius = 6;
+ frameCode.Radius = (uint)Application.GetRealHeight(17);
frameCode.BorderWidth = 1;
frameCode.BorderColor = UserCenterColor.Current.TextFrameColor;
this.AddChidren(frameCode);
@@ -73,6 +77,10 @@
if (SecureTextEntry == true)
{
txtCode.SecureTextEntry = true;
+ }
+ else if (NumberInputOnly == true)
+ {
+ txtCode.IsNumberKeyboardType = true;
}
txtCode.Name = i.ToString();
txtCode.TextAlignment = TextAlignment.Center;
@@ -84,6 +92,8 @@
txtCode.FoucsChanged += this.TxtCode_FoucsChangedEvent;
//鍊兼敼鍙樹簨浠�
txtCode.TextChangeEventHandler += this.TxtCode_TextChangeEvent;
+ //閿洏浜嬩欢
+ txtCode.KeyEventAction += this.TxtCode_KeyEvent;
}
}
@@ -105,7 +115,25 @@
}
if (e.Focus == true)
{
+ //鑷姩鐒︾偣閫夋嫨鍓嶉潰鐨勭┖鐧戒綅缃�
+ //if (txtCode.Text == string.Empty)
+ //{
+ // for (int i = 0; i < this.CodeLenth; i++)
+ // {
+ // if (dicCodeControls[i].Text == string.Empty)
+ // {
+ // dicCodeControls[i].FoucsChanged -= this.TxtCode_FoucsChangedEvent;
+ // dicCodeControls[i].Parent.BorderColor = UserCenterColor.Current.TextFrameSelectColor;
+ // dicCodeControls[i].Foucs = true;
+ // dicCodeControls[i].FoucsChanged += this.TxtCode_FoucsChangedEvent;
+ // return;
+ // }
+ // }
+ //}
txtCode.Parent.BorderColor = UserCenterColor.Current.TextFrameSelectColor;
+#if Android
+ txtCode.SetSelectionEnd();
+#endif
}
else
{
@@ -130,6 +158,10 @@
if (textValue.Length == this.CodeLenth)
{
dicCodeControls[this.CodeLenth - 1].Foucs = true;
+#if Android
+ //鍏夋爣鑷充簬鏈�鍚�
+ dicCodeControls[this.CodeLenth - 1].SetSelectionEnd();
+#endif
for (int i = 0; i < this.CodeLenth; i++)
{
//鍏堢Щ闄や簨浠�
@@ -158,9 +190,17 @@
if (dicCodeControls.ContainsKey(index + 1) == true)
{
dicCodeControls[index + 1].Foucs = true;
+#if Android
+ //鍏夋爣鑷充簬鏈�鍚�
+ dicCodeControls[index + 1].SetSelectionEnd();
+#endif
}
else
{
+#if Android
+ //鍏夋爣鑷充簬鏈�鍚�
+ txtCode.SetSelectionEnd();
+#endif
//鏈�鍚庝竴浣嶈緭鍏ュ畬鎴�,鏍¢獙楠岃瘉鐮�
string code = string.Empty;
for (int i = 0; i < this.CodeLenth; i++)
@@ -168,6 +208,30 @@
code += dicCodeControls[i].Text;
}
this.FinishInputEvent?.Invoke(code);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 閿洏浜嬩欢
+ /// </summary>
+ /// <param name="keysCode"></param>
+ private void TxtCode_KeyEvent(object sender, string keysCode)
+ {
+ if (keysCode == "Del")
+ {
+ var txtCode = (TextInputControl)sender;
+ if (txtCode.Text == string.Empty)
+ {
+ int index = Convert.ToInt32(txtCode.Name);
+ if (dicCodeControls.ContainsKey(index - 1) == true)
+ {
+ dicCodeControls[index - 1].Foucs = true;
+#if Android
+ //鍏夋爣鑷充簬鏈�鍚�
+ dicCodeControls[index - 1].SetSelectionEnd();
+#endif
+ }
}
}
}
@@ -187,6 +251,22 @@
}
}
+ /// <summary>
+ /// 娓呯┖杈撳叆鐨勫��
+ /// </summary>
+ public void ClearInputValue()
+ {
+ foreach (var inputText in this.dicCodeControls.Values)
+ {
+ //鍏堢Щ闄や簨浠�
+ inputText.TextChangeEventHandler -= TxtCode_TextChangeEvent;
+ //璧嬪��
+ inputText.Text = string.Empty;
+ inputText.TextChangeEventHandler += TxtCode_TextChangeEvent;
+ }
+ dicCodeControls[0].Foucs = true;
+ }
+
#endregion
#region 鈻� 鎺т欢鎽ф瘉___________________________
--
Gitblit v1.8.0