コード例 #1
0
        void ReleaseDesignerOutlets()
        {
            if (IssueNumberTextField != null)
            {
                IssueNumberTextField.Dispose();
                IssueNumberTextField = null;
            }

            if (StartDateTextField != null)
            {
                StartDateTextField.Dispose();
                StartDateTextField = null;
            }

            if (StartDatePlaceHolder != null)
            {
                StartDatePlaceHolder.Dispose();
                StartDatePlaceHolder = null;
            }

            if (StartDateWarningLabel != null)
            {
                StartDateWarningLabel.Dispose();
                StartDateWarningLabel = null;
            }
        }
コード例 #2
0
        public override void SetUpCell()
        {
            StartDateTextField.ShouldChangeCharacters = (UITextField textField, NSRange nsRange, string replacementString) => {
                if (replacementString != "" && !Char.IsDigit(replacementString.ToCharArray() [0]))
                {
                    return(false);
                }
                CSRange range = new CSRange((int)nsRange.Location, (int)nsRange.Length);
                DispatchQueue.MainQueue.DispatchAsync(() => {
                    UpdateUI();
                });
                bool changeText = true;

                if (range.Length > 1)
                {
                    return(false);
                }
                if (replacementString.Length > 1)
                {
                    return(false);
                }
                if (replacementString.Length == 1 && !char.IsDigit(replacementString.ToCharArray() [0]))
                {
                    return(false);
                }
                if (textField.Text.Length + replacementString.Length - range.Length > 5)
                {
                    return(false);
                }

                int textLengthAfter = (int)(textField.Text.Length + replacementString.Length - range.Length);

                if (replacementString.Length == 0 && range.Location < 2 && textField.Text.Contains("/"))
                {
                    textField.Text = textField.Text.Replace(@"/", @"");
                    textLengthAfter--;
                }
                if (range.Length == 1 && textField.Text.Substring(range.Location, 1) == "/")
                {
                    textField.Text  = textField.Text.Substring(0, 1);
                    textLengthAfter = 1;
                    changeText      = false;
                }

                if (range.Location == 1 && textField.Text.Length == 1)
                {
                    var aStringBuilder = new StringBuilder(textField.Text);
                    aStringBuilder.Remove(range.Location, range.Length);
                    aStringBuilder.Insert(range.Location, replacementString);
                    string newTextOrig = aStringBuilder.ToString();

                    string text = newTextOrig;
                    if (Int32.Parse(text) > 12 || Int32.Parse(text) == 0)
                    {
                        FlashCheckDateLabel();
                        return(false);
                    }

                    textField.Text = text;
                    textField.Text = textField.Text + @"/";
                    textLengthAfter++;
                    changeText = false;
                }
                else if (range.Location == 0 && textField.Text.Length == 0)
                {
                    if (replacementString.Substring(0, 1).ToCharArray() [0] > '1')
                    {
                        var formatedString = string.Format(@"0{0}/", replacementString);

                        var aStringBuilder = new StringBuilder(textField.Text);
                        aStringBuilder.Remove(range.Location, range.Length);
                        aStringBuilder.Insert(range.Location, formatedString);

                        textField.Text   = aStringBuilder.ToString();
                        textLengthAfter += 2;
                        changeText       = false;
                    }
                }

                if (textLengthAfter >= 4)
                {
                    var aStringBuilder = new StringBuilder(textField.Text);
                    aStringBuilder.Remove(range.Location, range.Length);
                    aStringBuilder.Insert(range.Location, replacementString);

                    string textAfter = aStringBuilder.ToString();


                    int proposedDecade = (textAfter.ToCharArray() [3] - '0') * 10;
                    int yearDecade     = currentYear - (currentYear % 10);

                    if (proposedDecade > yearDecade)
                    {
                        FlashCheckDateLabel();
                        return(false);
                    }

                    if (textLengthAfter == 5)
                    {
                        if (!cardHelper.IsStartDateValid(textAfter))
                        {
                            FlashCheckDateLabel();
                            return(false);
                        }


                        var bStringBuilder = new StringBuilder(textField.Text);
                        bStringBuilder.Remove(range.Location, range.Length);
                        bStringBuilder.Insert(range.Location, replacementString);


                        textField.Text = bStringBuilder.ToString();
                        DispatchQueue.MainQueue.DispatchAsync(() => {
                            IssueNumberTextField.BecomeFirstResponder();
                        });
                        changeText = false;
                    }
                }

                char[] placeHolder = "MM/YY".ToCharArray();
                for (int iii = 0; iii < textLengthAfter; iii++)
                {
                    placeHolder [iii] = ' ';
                }

                StartDatePlaceHolder.Text = new string (placeHolder);
                return(changeText);
            };


            IssueNumberTextField.ShouldChangeCharacters = (UITextField textField, NSRange nsRange, string replacementString) => {
                if (replacementString != "" && !Char.IsDigit(replacementString.ToCharArray() [0]))
                {
                    return(false);
                }
                CSRange range = new CSRange((int)nsRange.Location, (int)nsRange.Length);
                DispatchQueue.MainQueue.DispatchAsync(() => {
                    UpdateUI();
                });
                if (range.Length > 1)
                {
                    return(false);
                }
                if (replacementString.Length > 1)
                {
                    return(false);
                }
                if (replacementString.Length == 1 && !char.IsDigit(replacementString.ToCharArray() [0]))
                {
                    return(false);
                }
                if (textField.Text.Length + replacementString.Length - range.Length > 3)
                {
                    return(false);
                }
                if (textField.Text.Length + replacementString.Length == 3 && replacementString != "")
                {
                    var aStringBuilder = new StringBuilder(textField.Text);
                    aStringBuilder.Remove(range.Location, range.Length);
                    aStringBuilder.Insert(range.Location, replacementString);
                    textField.Text = aStringBuilder.ToString();
                    DismissKeyboardAction();
                    return(true);
                }
                return(true);
            };
        }
コード例 #3
0
 public override void DismissKeyboardAction()
 {
     IssueNumberTextField.ResignFirstResponder();
     StartDateTextField.ResignFirstResponder();
 }