首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用自定义版本的UITextField引发的异常

使用自定义版本的UITextField引发的异常
EN

Stack Overflow用户
提问于 2013-05-23 18:20:24
回答 1查看 306关注 0票数 0

我试图使用扩展UITextField的自定义控件,以便在激活文本字段时隐藏选择插入符号。文本字段有一个选择器作为它的输入视图,所以当选择器处于活动状态时,我不希望文本字段中闪烁的光标。最后,我将向自定义控件添加类似公开图标的内容,但现在我只是试图隐藏光标。我得到了这个解决方案,here

不过,我的应用程序正在抛出一个异常:在已被GC‘’ed类型的托管对象(0xC8BC970)上从object调用的选择器。

如果我将自定义字段更改为UITextField,则不会得到错误。

这是我的定制课程:

代码语言:javascript
运行
复制
using System.Drawing;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace TestCustomControl
{
    [Register("PickerTextField")]
    public class PickerTextField : UITextField
    {
        public override RectangleF GetCaretRectForPosition (UITextPosition position)
        {
            return RectangleF.Empty;
        }
    }
}

我以UITextField和PickerTextField的身份推出了自己的产品,并尝试在我的个人电脑上运行VS 2012,在Mac上运行Xamarin Studio 4.0.8 (build 2)。在所有场景中,如果在XCode中,我将字段设置为UITextField,它可以正常工作(但我得到一个闪烁的光标),如果我将其设置为PickerTextField,则会得到GC异常。

我可以在某个地方发布整个项目的代码,如果它有帮助的话(它只是一个ViewController和视图、自定义控件类、我的选择器的模型、XIB文件,以及为新项目创建的其他文件)。

EN

Stack Overflow用户

回答已采纳

发布于 2013-05-23 19:26:38

您缺少了IntPtr构造函数。如果实例是从XIB创建的,则需要这样做。添加默认的c‘’tor也是个好主意:

代码语言:javascript
运行
复制
   [Register("PickerTextField")]
        public class PickerTextField : UITextField
        {
            public PickerTextField(IntPtr handle) : base(handle)
            {}

public PickerTextField() : base()
            {}

            public override RectangleF GetCaretRectForPosition (UITextPosition position)
            {
                return RectangleF.Empty;
            }
        }

这很有趣,因为当我开始使用MonoTouch:How to use custom UIView subclass in XIB editor with Monotouch?时,我也问了同样的问题

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16721185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档