为什么我会得到“[UITextField hasText]:无法识别的选择器”?

时间:2012-01-09 09:00:54

标签: ios xamarin.ios uitextfield

在运行iOS 4.3.5的iPad上,我收到此错误:

MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: -[UITextField hasText]: unrecognized selector sent to instance 0x6f692d0
  at MonoTouch.UIKit.UITextField.get_HasText () [0x00000] in <filename unknown>:0

确实在查看Apple的文档时,hasText没有“UITextField”。但它至少在iOS5设备上有效。 这里发生了什么? MT为5.0.1,部署目标设置为4.3。这个选择器在iOS 5中是新的吗?但为什么没有记录?

2 个答案:

答案 0 :(得分:1)

Shivan是对的 - HasText是MonoTouch的东西。

以下是列出HasText的地方(它是在4.2和5.0之间的MonoTouch中引入的):http://ios.xamarin.com/Releases/MonoTouch_5/API-diff-from-4.2

如果您需要HasText,则需要在iOS 5.0&amp;新。

答案 1 :(得分:0)

HasText属性来自iOS5 UIKeyInput协议:

http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UIKeyInput_Protocol/Reference/Reference.html

UITextField采用哪个:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextField_Class/Reference/UITextField.html

这就是你在UITextField中看到该属性的原因。

我们希望将检查添加到Gendarme,IDE或编译器,以标记仅在某些版本中引入的方法。图书馆有这些信息,现在还没有使用。