обычно, когда вы касаетесь области ввода текста, клавиатура появляется, а когда вы касаетесь пустой области экрана, клавиатура исчезает. Как это сделать?
так же, как то, что мы испытали на сафари iphone...
Спасибо
обычно, когда вы касаетесь области ввода текста, клавиатура появляется, а когда вы касаетесь пустой области экрана, клавиатура исчезает. Как это сделать?
так же, как то, что мы испытали на сафари iphone...
Спасибо
Обновлен способ (рекомендуется):
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
Это закончит редактирование на всех подпунктах и отменит первый ответчик.
Другой способ (перечисление всех текстовых просмотров):
Здесь шаг за шагом:
Добавьте IBAction к вашему контроллеру вида, например - (IBAction) backgroundTouch: (id) отправитель
В действии backgroundTouch вам нужно отправить сообщение resignFirstResponder ко всем текстовым полям в вашем представлении. Это неудачно, но необходимо, так как в настоящее время нет способа получить объект, который в настоящее время имеет статус FirstResponder. Он должен выглядеть примерно так:
- (IBAction)backgroundTouch:(id)sender {
[someTextBox resignFirstResponder];
[anotherTextBox resignFirstResponder];
}
Добавить элемент управления в представление, размер его для охвата всей видимой области (кроме строки состояния или любой вкладки или навигационных контроллеров). Выберите кнопку, затем перейдите в меню "Макет" и выберите "Отправить в Назад". Также установите кнопку "Тип" в пользовательскую, которая невидима, если вы специально не укажете для нее код чертежа.
Подключите кнопку Touch Up Inside к фонуTouch: действие и попробуйте.
Используйте это простое решение
Для Swift 2:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
Для цели C:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
Работает с UITextField, UITextView и всеми subviews.
Забудьте о том, что на кнопке в фоновом режиме есть простое решение
(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.textfieldName resignFirstResponder];
}
есть учебник об этой проблеме (также о цифровой клавиатуре без ключа DONE) над здесь
Для > iOS 4.0 существует другое решение (и, возможно, лучше) С помощью этого кода один раз нажмите в любом месте, чтобы скрыть клавиатуру.
// single tap to resign keyboard
UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithBlock:^(UIGestureRecognizer *rec){
[input_text resignFirstResponder];
}];
self.singleTapRecognizer.numberOfTapsRequired = 1;
self.singleTapRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:singleTapRecognizer];
Отправьте resignFirstResponder
в элемент управления.
Вы также можете сделать это
Скрыть клавиатуру, коснувшись фонового изображения
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[[self view] endEditing:YES];
}
Следующий код отлично работает с проектом xamarin iOS:
public override void TouchesBegan (NSSet touches, UIEvent evt){
View.EndEditing (true);
}
У меня тоже была эта проблема, это было очень неприятно. Но я понял, как избавиться от клавиатуры при аварии. Скажите, что вы текстовый Джон, и там клавиатура на пути от вас просмотра ваших разговоров и, следовательно, уменьшение экрана вы можете видеть. Затем нажмите на сообщения в верхнем левом углу, затем выберите другого человека, с которым вы записали текст, затем снова нажмите сообщения в левом верхнем углу. Затем вернитесь и выберите Джона. Нет, вы вернулись к разговору с Джоном, и клавиатура ушла. Швы любят много, но это довольно быстро. Вы могли бы подумать, что они просто надели кнопку скрыть на клавиатуре LOL Hope, которая помогает или была достаточно ясной.
Я не смог скомпилировать ответ Val с помощью селектора "initWithBlock:".
Этот код работает для меня. Добавьте это в метод, определяющий представление - обратите внимание, что мое представление составлено, и подвью, которое я хочу ответить на одно нажатие, - "chatView". Представление поля ввода, использующее клавиатуру, называется "chatInput".
// single tap to resign (hide) the keyboard
UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)];
singleTapRecognizer.numberOfTouchesRequired = 1;
singleTapRecognizer.cancelsTouchesInView = NO;
[chatContent addGestureRecognizer:singleTapRecognizer];
Затем добавьте метод обработки крана.
/**
* Handles a recognized single tap gesture.
*/
- (void) handleTapFrom: (UITapGestureRecognizer *) recognizer {
// hide the keyboard
NSLog(@"hiding the keyboard");
[chatInput resignFirstResponder];
}
Это решение должно работать нормально, если вы работаете с быстрым и iOS 8/9:
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
self.view.endEditing(true)
}