IPhone UITextField, не показывающий каре редактирования или очищающий текст заполнителя при ответвлении

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

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

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

The wonderful issue...

Какие-либо предложения?

Окно отображается с [self presentModalViewController: animated:YES];, который может или не может быть причиной этой проблемы - когда я выполняю UI с помощью Интерфейсного 'тестового' приложения Разработчика, текстовые поля отвечают как нормальный.

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

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

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

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

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

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

6
задан Glorfindel 18 June 2019 в 22:04
поделиться

2 ответа

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

Оказывается, проблема была в том, что я использовал Window вместо View в XIB-файле. Именно поэтому при показе модального представления в контроллере Navigation оно не отображалось должным образом (т.е. только белый экран) и поэтому UITextField не работал должным образом при показе представления из RootViewController.

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

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

1
ответ дан 17 December 2019 в 07:03
поделиться

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

Вы также можете установить то же свойство программно, используя 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 добавьте следующее после строка, содержащая [window makeKeyAndVisible];

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];

}
3
ответ дан 17 December 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: