5

UITextFieldのプレースホルダーテキストを別の色に設定しようとしています。drawPlaceholderInRectメソッドをサブクラス化してオーバーライドする必要があることを学びました。

iPhoneUITextField-プレースホルダーのテキストの色を変更する

    (void) drawPlaceholderInRect:(CGRect)rect {
    [[UIColor blueColor] setFill];
    [[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:16]];
}

これが私がこれまでに持っているものですが、私はそれを正しくする方法を理解することができません。これをMonoTouch/C#オブジェクトにマップする方法がわからないため、最後の行で混乱しています。

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(handle)
    {

    }    

        public override void DrawPlaceholder (RectangleF rect)
        {       

            UIColor col = new UIColor(0,0,255.0,0.7);
            col.SetFill();
            //Not sure what to put here
            base.DrawPlaceholder (rect);}
    }
}
4

1 に答える 1

2

super元のObjCコードは(基本メソッドです)を呼び出しませんが、を呼び出しますdrawInRect:。MonoTouchで同じことを試しましたか?例えば

public override void DrawPlaceholder (RectangleF rect)
{
    using (UIFont font = UIFont.SystemFontOfSize (16))
    using (UIColor col = new UIColor (0,0,255.0,0.7)) {
        col.SetFill ();
        base.DrawString (rect, font);
    }
}

注:C#の拡張メソッド(任意ので呼び出すことができます)drawInRect:WithFont:にマップします。DrawStringstring

于 2012-10-02T12:46:39.213 に答える