示例#1
0
        void ITextWatcher.BeforeTextChanged(ICharSequence s, int start, int count, int after)
        {
            if (Mask != null)
            {
                if (!_editingBefore)
                {
                    _editingBefore = true;

                    if (start > _lastValidMaskPosition)
                    {
                        _ignore = true;
                    }

                    int rangeStart = start;
                    if (after == 0)
                    {
                        rangeStart = ErasingStart(start);
                    }

                    Range range = calculateRange(rangeStart, start + count);
                    if (range.Start != -1)
                    {
                        _rawText.SubtractFromString(range);
                    }
                    if (count > 0)
                    {
                        _selection = PreviousValidPosition(start);
                    }
                }
            }
        }
示例#2
0
        public void BeforeTextChanged(Java.Lang.ICharSequence s, int start, int count, int after)
        {
            if (string.IsNullOrEmpty(mask))
            {
                return;
            }

            if (!editingBefore)
            {
                editingBefore = true;
                ignore       |= start > lastValidMaskPosition;

                int rangeStart = start;
                if (after == 0)
                {
                    rangeStart = erasingStart(start);
                }

                var range = calculateRange(rangeStart, start + count);

                if (range.Start != -1)
                {
                    rawText.SubtractFromString(range);
                }

                if (count > 0)
                {
                    selection = previousValidPosition(start);
                }
            }
        }