【发布时间】:2013-05-23 18:20:24
【问题描述】:
我正在尝试使用扩展 UITextField 的自定义控件,以便在激活文本字段时隐藏选择插入符号。文本字段具有拾取器作为其InputView,因此我在选择器处于活动状态时,我不希望在文本字段中闪烁光标。我最终会在自定义控件中添加类似披露图标的东西,但现在我只是想隐藏光标。我得到了这个解决方案here。
不过,我的应用抛出了一个异常:Selector 从objective-c 对一个已被GC 处理的TestCustomControl.PickerTextField (0xC8BC970) 类型的托管对象调用。
如果我将自定义字段改回 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;
}
}
}
我已将我的 Outlet 设为 UITextField 和 PickerTextField,并尝试在我的 PC 上从 VS 2012 和 Mac 上的 Xamarin Studio 4.0.8(内部版本 2)运行它。在所有情况下,如果在 XCode 中我将字段设置为 UITextField 它工作正常(但我得到一个闪烁的光标),如果我将它设置为 PickerTextField 我得到 GC 异常。
如果有帮助,我可以将整个项目的代码发布到某个地方(它只是一个 ViewController 和 View、自定义控件类、我的选择器的模型和 XIB 文件,以及为一个新项目)。
【问题讨论】:
-
好点 - 它发生在应用程序启动时。调试器在我的 AppDelegate 中的 window.MakeKeyAndVisible() 上中断。我根据您的建议创建了一个要点,其中包含项目中的所有文件:https://gist.github.com/jfren484/5638688。
标签: xamarin.ios uitextfield xamarin