所以,我正在使用 MonoTouch,基本上是在尝试将大量 Obj-C 代码转换为 MonoTouch。问题是 MonoTouch 没有很好地记录很多事情(或者至少我找不到它)。
在我的表单上(是的,我仍然称它为表单)我有一个带有占位符文本的 UITextField。在我指定 CustomUITextField 的自定义类之前,它工作得很好。(见下文)。
问题是当我加载它所在的屏幕时,我的断点被击中。但是,什么都不做。即使我调用 base.DrawPlaceholder(rect); 也不再显示占位符;从覆盖方法。我希望通过调用 base.DrawPlaceholder(rect); 我至少会获得显示占位符文本的默认功能(这在不使用我的自定义类的情况下有效 - 已测试)。
如果我继续使用这个自定义类,但从我的实现中删除了覆盖 DrawPlaceholder 方法,则标准占位符文本显示正常。这与覆盖 DrawPlaceholder 然后调用 base.DrawPlaceholder(rect); 有何不同。这是同一件事。
有谁知道我在这里做错了什么?我快疯了...
using System;
using MonoTouch.UIKit;
using MonoTouch.Foundation;
using System.Drawing;
namespace MyApp
{
[Register("CustomUITextField")]
public class CustomUITextField:UITextField
{
public CustomUITextField () :base()
{
}
public CustomUITextField (IntPtr handle) :base()
{
this.BackgroundColor=UIColor.Black;
}
public override void DrawPlaceholder (RectangleF rect)
{
this.BackgroundColor=UIColor.Black;
base.DrawPlaceholder(rect);
//UIColor col = new UIColor(0,0,255,0);
//col.SetFill();
//this.DrawString ("Title",rect, this.Font);
}
public override void DidChange (NSKeyValueChange changeKind, NSIndexSet indexes, NSString forKey)
{
base.DidChange (changeKind, indexes, forKey);
}
public override void DidChangeValue (string forKey)
{
base.DidChangeValue (forKey);
this.Text="";
}
}
}