2012-01-09 37 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

相關問題