У меня есть окно в рамках приложения для iPhone, которое отображено модально, чтобы позволить пользователю вводить их настройки для веб-сервиса на 'первый показ'.
Текстовым полям установили текст помощника, и когда Вы касаетесь их, клавиатура показывает и позволяет Вам вводить текст.
К сожалению, текстовые поля не очищают текст помощника, показывают каре редактирования или показывают введенный текст (как в снимке экрана ниже).
Какие-либо предложения?
Окно отображается с [self presentModalViewController:
, который может или не может быть причиной этой проблемы - когда я выполняю UI с помощью Интерфейсного 'тестового' приложения Разработчика, текстовые поля отвечают как нормальный.
Clear when editing begins
был установлен для обоих полей.
Заранее спасибо!
Отредактированный: Больше информации После информации Bart Gottschalk, если я думал, что должен добавить еще некоторую информацию. Во-первых, приложением является основанное на навигации Приложение.
Во-вторых, тестовое приложение, рекомендуемый Bart хорошо работал, так, чтобы взял модальное окно и представление из уравнения.
В-третьих, я представлял модальное представление когда -(void)viewWillAppear...
метод делегата называли - который может быть неправильным местом... однако я не на 100% уверен, должен ли я представлять модальное представление из didFinishLaunchingWithOptions
из делегата приложения...
(это происходит на Средстве моделирования и iPhone 3.1.3),
Ну, я только что разобрался с этим, но, честно говоря, без настойчивости и потрясающей помощи Барта это заняло бы гораздо больше времени и принесло бы гораздо больше разочарований.
Оказывается, проблема была в том, что я использовал Window вместо View в XIB-файле. Именно поэтому при показе модального представления в контроллере Navigation оно не отображалось должным образом (т.е. только белый экран) и поэтому UITextField
не работал должным образом при показе представления из RootViewController
.
Итак, вкратце - модальные представления должны иметь UIView
, а не UIWindow
в XIB/NIB файле.
Спасибо за помощь, Барт!
В 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];
}