0

可能重复:
在 Monotouch 中继承和覆盖 UITextField

所以,我正在使用 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="";
        }
    }
}
4

0 回答 0