IPhone UITextField не показывает редактирование каретки или очистки текста заполнителя при нажатии - PullRequest
6 голосов
/ 19 февраля 2010

У меня есть окно в приложении iPhone, которое отображается модально, чтобы позволить пользователю вводить свои настройки для веб-службы при «первом запуске».

В текстовых полях установлен вспомогательный текст, и при нажатии на них клавиатура отображается и позволяет вводить текст.

К сожалению, текстовые поля не очищают вспомогательный текст, показывают символ редактирования или вводимый текст (как на скриншоте ниже).

The wonderful issue...

Есть предложения?

Окно отображается с [self presentModalViewController:<controller_name> animated:YES];, что может или не может быть причиной этой проблемы - когда я запускаю пользовательский интерфейс через «тестовое» приложение Interface Builder, текстовые поля реагируют как обычно.

Clear when editing begins установлено для обоих полей.

Заранее спасибо!

Отредактировано: дополнительная информация После информации, которую предоставил Барт Готшалк, я решил добавить еще немного информации. Во-первых, это приложение на основе навигации.

Во-вторых, тестовое приложение, рекомендованное Бартом, работало нормально, поэтому выводит модальное окно и вид из уравнения.

В-третьих, я представлял модальное представление при вызове метода делегата -(void)viewWillAppear..., что вполне может быть неправильным местом ... однако я не уверен на 100%, следует ли мне представлять модальное представление в пределах didFinishLaunchingWithOptions делегата приложения ...

(это происходит на симуляторе и iPhone 3.1.3)

Ответы [ 3 ]

3 голосов
/ 19 февраля 2010

В Интерфейсном Разработчике вы установили флажок «Очистить при редактировании»?С этой отметкой текстовое поле должно очистить любое значение, как только вы нажмете на редактирование, какое поведение, я думаю, вы ищете.

Вы также можете установить то же свойство программно, используя clearsOnBeginEditing, если это удобно в вашем коде.

Я предполагаю, что вы сделали это, и оно ведет себя не так, как вы ожидаете.Просто проверьте это в качестве первого шага, который поможет вам отладить.

Кроме того, это происходит как в симуляторе, так и на тестирующем устройстве?

Барт

Отредактировано ниже ...

Это кажется странным.Давайте отбросим все, кроме основ представления модального представления при запуске приложения, и посмотрим, что произойдет.

Я заново создал самое простое приложение (из известных мне), чтобы проверить представление контроллера модального представления при запуске и убедиться, что редактирование полей работает нормально.Что происходит с вами, когда вы делаете то же самое / подобное в новом проекте?

Вот что я делаю:
1) Создайте новое приложение на основе представления в XCode под названием «ModalViewTest»

2) Создайте новый UIViewController с xib под названием ModalViewController

3) В ModalViewController.h добавьте метод

-(IBAction)closeModalView;

4) В ModalViewController.m добавьте реализацию метода как

-(IBAction)closeModalView {
    [self dismissModalViewControllerAnimated:YES];
}

5) В ModalViewController.xib создайтедва текстовых поля и установите для каждого текста-заполнителя значение abcd1234 и подтвердите, что установлен флажок «Очистить при редактировании».

6) В файле ModalViewController.xib добавьте кнопку «Закрыть» и установите для запуска Touch Up Inside."closeModalView"

7) В делегат приложения (ModalViewTestAppDelegate) добавьте следующий импорт

#import "ModalViewController.h"

8) В делегат приложения (ModalViewTestAppDelegate) applicationDidFinishLaunching добавьте следующее после строки, содержащей [windowmakeKeyAndVisible];

ModalViewController *modalViewController = [[ModalViewController alloc] initWithNibName:@"ModalViewController" bundle:nil]; 
[viewController presentModalViewController:modalViewController animated:YES];

9) Сохранить все

10) Создать и запустить это новое приложение

Редактируетг текстовых полей работают как положено?Если да, что отличается от того, как вы создаете и представляете свой modalView?Если нет, тогда нам нужно копать дальше, чтобы определить, что происходит в вашей среде.

Второе редактирование ниже ...

При создании приложения на основе навигации я сделал следующее, чтобы представить модальное представление при запуске приложения.Работает ли это для вас как в тестовом приложении, так и в реальном приложении?

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // Override point for customization after app launch    

    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];

    ModalViewController *modalViewController = [[ModalViewController alloc] initWithNibName:@"ModalViewController" bundle:nil]; 
    [navigationController presentModalViewController:modalViewController animated:YES];

}
1 голос
/ 01 марта 2010

Ну, я только что понял это, но, честно говоря, без настойчивости и потрясающей помощи Барта это заняло бы намного больше времени и было бы гораздо более разочаровывающим.

Оказывается, проблема заключалась в том, что я использовал окно вместо представления в файле XIB. Вот почему при отображении модального вида в контроллере навигации он не будет отображаться должным образом (т. Е. Только белый экран) и почему UITextField не будет работать должным образом при отображении вида из RootViewController.

Итак, подведем итог - модальные представления должны иметь UIView, а не UIWindow в файле XIB / NIB.

Спасибо за помощь, Барт!

0 голосов
/ 29 января 2014

У меня та же проблема, но только в iOS7. Я решил это, изменив цвет оттенка textField на синий в раскадровке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...