2012-01-09 1 views
0

Об одном IPad погонной прошивки 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 

И действительно, глядя на документации Apple, нет «hasText» для UITextField. Но он работает, по крайней мере, на устройствах iOS5. Что здесь происходит? MT - 5.0.1, а цель развертывания - 4.3. Является ли этот селектор новым в iOS 5? Но почему это не задокументировано?

Рене

+1

Вместо этого вы должны изучить документацию monotouch. – Raptor

ответ

1

Shivan прав - HasText это MonoTouch вещь.

Вот одно место, где HasText перечислен (она была введена в MonoTouch от 4,2 & 5.0): http://ios.xamarin.com/Releases/MonoTouch_5/API-diff-from-4.2

Если вы хотите HasText, вы должны работать на прошивке 5.0 & новее.

+0

Так грустно, что нет никакого предупреждения от компиляции, если для цели развертывания установлено значение 4.3! :-( – Krumelur

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.

Мы хотим добавить проверки в жандарм, среду IDE или компилятор, чтобы использовать методы, которые были введены только в определенных версиях. Библиотеки имеют эту информацию, она просто не используется прямо сейчас.

+0

Тогда я не понимаю вопроса: «Доступно в iOS 3.2 и более поздних версиях». Почему бы ему не работать на iOS 4.3? – Krumelur

+0

Протокол был принят в 5.0, поэтому он может не существовать раньше в классе. –

Смежные вопросы