我试图使用扩展UITextField的自定义控件,以便在激活文本字段时隐藏选择插入符号。文本字段有一个选择器作为它的输入视图,所以当选择器处于活动状态时,我不希望文本字段中闪烁的光标。最后,我将向自定义控件添加类似公开图标的内容,但现在我只是试图隐藏光标。我得到了这个解决方案,here。
不过,我的应用程序正在抛出一个异常:在已被GC‘’ed‘类型的托管对象(0xC8BC970)上从object调用的选择器。
如果我将自定义字段更改为UITextField,则不会得到错误。
这是我的定制课程:
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文件,以及为新项目创建的其他文件)。
发布于 2013-05-23 19:26:38
您缺少了IntPtr构造函数。如果实例是从XIB创建的,则需要这样做。添加默认的c‘’tor也是个好主意:
[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?时,我也问了同样的问题
https://stackoverflow.com/questions/16721185
复制相似问题