如何限制 MonoTouch 中的 UITextView 字符限制? [复制]

Posted

技术标签:

【中文标题】如何限制 MonoTouch 中的 UITextView 字符限制? [复制]【英文标题】:How to limit UITextView character limit in MonoTouch? [duplicate] 【发布时间】:2012-12-13 08:41:19 【问题描述】:

我希望用户能够在UITextView 中输入不超过一些数字字符。这也需要与复制粘贴一起使用。我找到了this solution,但它是Objective C,它的缺点是在达到限制后重置光标位置。

我想要的是一个继承自 UITextView 的类,公开 MaxCharacters 属性并在内部完成所有工作。

【问题讨论】:

【参考方案1】:

此代码基于manicaesar's answer,但在达到限制后不会重置插入符号位置。

[Register ("LimitedTextView")]
public class LimitedTextView : UITextView

    public int MaxCharacters  get; set; 

    void Initialize ()
    
        MaxCharacters = 140;
        ShouldChangeText = ShouldLimit;
    

    static bool ShouldLimit (UITextView view, NSRange range, string text)
    
        var textView = (LimitedTextView)view;
        var limit = textView.MaxCharacters;

        int newLength = (view.Text.Length - range.Length) + text.Length;
        if (newLength <= limit)
            return true;

        // This will clip pasted text to include as many characters as possible
        // See https://***.com/a/5897912/458193

        var emptySpace = Math.Max (0, limit - (view.Text.Length - range.Length));
        var beforeCaret = view.Text.Substring (0, range.Location) + text.Substring (0, emptySpace);
        var afterCaret = view.Text.Substring (range.Location + range.Length);

        view.Text = beforeCaret + afterCaret;
        view.SelectedRange = new NSRange (beforeCaret.Length, 0);

        return false;
    

    public LimitedTextView (IntPtr handle) : base (handle)  Initialize (); 
    public LimitedTextView (RectangleF frame) : base (frame)  Initialize (); 

【讨论】:

以上是关于如何限制 MonoTouch 中的 UITextView 字符限制? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Monotouch/WCF:如何在没有 svcutil 的情况下使用 wcf 服务

添加限制某些 uibuttons 无法正常工作的 uiview iphone monotouch

如何清理 MonoTouch 中的线程?

MonoTouch 中的自定义标签栏项目

如何使用 Monotouch 设置导航项标题的代码?

这是 MonoTouch GC 中的错误吗?