Dans mon projet xamarin.android, j'ai un écran dans lequel edittext a été utilisé, qui est de type numberdecimal. ici je reçois l'événement textchanged sur keypress et en ajoutant le numéro à gauche en utilisant la méthode comme ci-dessous. Voici le code.UITextField KeyPress Handler dans Xamarin.IOS
namespace MobileApplication.Droid
{
[Activity(Label = "TransferScreen2Activity", ScreenOrientation = ScreenOrientation.Portrait, Theme = "@style/MyTheme")]
public class TransferScreenActivity : BaseActivity, IOnTouchListener
{
Button _nextButton;
EditText _amountEditText;
bool _triggerTextChangedforAmountEntry = true;
protected override async void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.transferscreen2);
_nextButton = FindViewById<Button>(Resource.Id.btnNext);
_amountEditText = FindViewById<EditText>(Resource.Id.etTransactionAmount);
_amountEditText.SetSelection(_amountEditText.Text.Length);
_amountEditText.TextChanged += _amountEditText_TextChanged;
_amountEditText.SetOnTouchListener(this);
}
private void _amountEditText_TextChanged(object sender, Android.Text.TextChangedEventArgs e)
{
if (_triggerTextChangedforAmountEntry)
{
_triggerTextChangedforAmountEntry = false;
string pressedKey = "";
if (e.Text.Count() < (e.Start + 1))
{
pressedKey = "";
}
else
{
pressedKey = e.Text.ToString()[e.Start].ToString();
}
if (!string.IsNullOrEmpty(pressedKey))
{
CalculateAmountAfterKeyPress(pressedKey, e.Start);
}
else
{
CalculateAmountAfterKeyPress("←", 0);
}
_amountEditText.SetSelection(_amountEditText.Text.Length);
_triggerTextChangedforAmountEntry = true;
}
}
private void CalculateAmountAfterKeyPress(string key, int cursorPosition) //appending method.
{
string currentText = "";
if (key == "←")
{
currentText = _amountEditText.Text.Trim().Replace("$", "");
}
else
{
currentText = _amountEditText.Text.Trim().Remove(cursorPosition, 1).Replace("$", "");
}
string result = "0";
bool isProperValue = false;
switch (key)
{
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
isProperValue = Common.ShiftLeftandAppendChar(currentText, key, out result);
break;
case "←":
isProperValue = Common.ShiftRight(currentText, out result);
break;
case "C":
isProperValue = true;
result = "0.00";
break;
default:
isProperValue = true;
break;
}
_amountEditText.Text = Resources.GetString(Resource.String.CurrencySymbol) + result;
if (!isProperValue)
{
Common.ShakeAnimation(this, _amountEditText);
}
}
public bool OnTouch(View v, MotionEvent e)
{
_amountEditText.OnTouchEvent(e);
_amountEditText.SetSelection(_amountEditText.Text.Length);
return true;
}
}
Ma question est ..Je à répliquer le tout dans Xamarin.ios..and je suis très nouveau à cette xamarin.ios. Quelqu'un peut-il s'il vous plaît me guider pour atteindre celui-ci.S'il vous plaît laissez-moi savoir s'il existe une autre solution de contournement pour faire celui-ci.
est ici xamarin.ios code (incomplet)
namespace MobileApplication.iOS
{
public partial class FundTransferScreenController : BaseViewController
{
public FundTransferScreenController(IntPtr handle) : base(handle)
{
}
public override async void ViewDidLoad()
{
base.ViewDidLoad();
amountValue.ValueChanged += HandleTextChanged;
}
}
private void HandleTextChanged(object sender, EventArgs e)
{
//how to do it like android code..?
}
public override void TouchesBegan(NSSet touches, UIEvent evt)
{
base.TouchesBegan(touches, evt);
amountValue.ResignFirstResponder();
}
}