Monotouch:UITextField.LeftView有效,RightView没有

时间:2011-03-21 13:51:29

标签: xamarin.ios

我在这里使用最新版本的MT。 RightView中没有UITextField属性。看起来它被遗忘了绑定。我可以手动绑定吗?

已解决 - 阅读结束

编辑:感谢杰夫,我正在靠近。使用LeftView(!)我得到了这段代码没有问题:

var _entry = new UITextField ();
UIButton oLeftButton = UIButton.FromType(UIButtonType.DetailDisclosure);
_entry.LeftView = oLeftButton;
_entry.LeftViewMode = UITextFieldViewMode.Always;

使用手动绑定尝试使用RightView:

var _entry = new UITextField ();
UIButton oRightButton = UIButton.FromType(UIButtonType.DetailDisclosure);
Messaging.void_objc_msgSend_intptr (_entry.Handle, Selector.GetHandle ("setRightView:"), oRightButton.Handle);
// Code crashes here with a NULL ref in ObjC.
_entry.RightViewMode = UITextFieldViewMode.Always;

和另一个编辑: MT 3.x中存在一个错误,该错误将在MT4中修复,并在访问RightViewMode属性时导致崩溃。 RightViewMode必须像这里演示的那样直接设置。

var _entry = new UITextField ();
UIButton oRightButton = UIButton.FromType(UIButtonType.DetailDisclosure);
// Set RightView directly.
Messaging.void_objc_msgSend_intptr (_entry.Handle, Selector.GetHandle ("setRightView:"), oRightButton.Handle);
// Set RightViewMode directly.
Messaging.void_objc_msgSend_int (_entry.Handle, Selector.GetHandle ("setRightViewMode:"), (int)UITextFieldViewMode.Always);

1 个答案:

答案 0 :(得分:1)

是的,这是错过的,它将在MonoTouch 4 Alpha 3中修复。

您可以像这样手动调用它:

Runtime.GetNSObject (Messaging.intptr_objc_msgSend (textField.Handle, Selector.GetHandle ("leftView")));