2012-01-09 62 views
0

在iPad上运行iOS 4.3.5我得到这个错误:为什么我会得到“[UITextField hasText]:无法识别的选择器”?

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 

事实上在看苹果公司的文件,没有“hasText”为UITextField。但它至少在iOS5设备上起作用。 这是怎么回事? MT是5.0.1,部署目标设置为4.3。这个选择器在iOS 5中是新的吗?但为什么没有记录?

+1

您应该查看monotouch文档。 – Raptor 2012-01-09 09:02:31

回答

1

西瓦是正确的 - HasText是MonoTouch的事情。

这里是一个地方HasText上市(它是在MonoTouch中推出4.2 & 5.0之间):http://ios.xamarin.com/Releases/MonoTouch_5/API-diff-from-4.2

如果你想HasText,你需要在iOS 5.0 &新的运行。

+0

如果将部署目标设置为4.3,那么很遗憾,编译时没有警告! :-( – Krumelur 2012-01-09 10:02:45

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或编译器来标记仅在特定版本中引入的方法。图书馆拥有这些信息,现在只是没有被使用。

+0

然后我不明白这个问题:“在iOS 3.2及更高版本中可用” - 为什么它不适用于iOS 4.3? – Krumelur 2012-01-09 15:15:12

+0

该协议在5.0中采用,因此它可能在课程之前不存在。 – 2012-01-10 22:33:14

相关问题