Monotouch UITextField只有数字

use*_*675 4 c# character uitextfield xamarin.ios

我没有找到任何解决方案如何限制textfield只允许在Monotouch中的数字.

另外我希望那里不超过8个字符.

red*_*t84 7

UITextField在MonoTouch中实现仅数字,我使用以下代码:

var numberTextField = new UITextField { KeyboardType = UIKeyboardType.NumberPad };
numberTextField.ShouldChangeCharacters = (textField, range, replacement) =>
    {
        int number;
        return replacement.Length == 0 || int.TryParse(replacement, out number);
    };
Run Code Online (Sandbox Code Playgroud)

并限制特定数量的字符:

const int maxCharacters = 8;
textField.ShouldChangeCharacters = (textField, range, replacement) =>
    {
        var newContent = new NSString(textField.Text).Replace(range, new NSString(replacement)).ToString();
        return newContent.Length <= maxCharacters;
    };
Run Code Online (Sandbox Code Playgroud)

所以,合并:

const int maxCharacters = 8;
var numberTextField = new UITextField { KeyboardType = UIKeyboardType.NumberPad };
numberTextField.ShouldChangeCharacters = (textField, range, replacement) =>
    {
        var newContent = new NSString(textField.Text).Replace(range, new NSString(replacement)).ToString();
        int number;
        return newContent.Length <= maxCharacters && (replacement.Length == 0 || int.TryParse(replacement, out number));
    };
Run Code Online (Sandbox Code Playgroud)