0
在我的xamarin.android項目中,我有一個使用edittext的屏幕,它的類型爲numberdecimal。在這裏我得到keyPress上的textchanged事件,並使用下面的方法向左邊添加 數字。 這是代碼。Xamarin中的UITextField KeyPress Handler.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;
}
}
我的問題是..我希望複製Xamarin.ios..and整個事情我是很新的這xamarin.ios。任何人都可以請指導我 來實現這一個。請讓我知道是否有任何其他解決方法來做到這一點。
這裏是xamarin.ios代碼(不完全)
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();
}
}