Отключить клавиатуру, когда пользователь нажимает на MapView - PullRequest
1 голос
/ 30 января 2010

У меня в Navbar есть UITextView, который действует как окно поиска. Я хотел бы отклонить связанную клавиатуру, когда пользователь нажимает под текстовым полем, а именно - на MKMapView. Однако я не могу понять, как это сделать, так как не похоже, что я могу перехватывать прикосновения от вида карты.

Я рассмотрел несколько решений, но, насколько я могу судить, ни одно из них не подходит для моего случая. У кого-нибудь есть простой способ сделать это? Я немного новичок, поэтому, пожалуйста, дайте мне знать, если я не предоставляю какую-то соответствующую информацию, и, пожалуйста, предоставьте несколько строк примера кода в своем ответе, если можете - я все еще немного шатался с терминологией. Спасибо!

скриншот http://img532.imageshack.us/img532/4070/keyboardsm.png

Ответы [ 3 ]

1 голос
/ 05 ноября 2010

Я знаю, что это старый, но в случае, если кто-то еще ищет простой ответ на это, вот мое решение, чтобы получить "mapView" для resignFirstResponder. Это будет работать аналогично приложению «Карты Google» на iphone, где при начале редактирования текстового поля поиска появляется полупрозрачное поле.

Во-первых, вам нужно сделать свой контроллер вида UISearchBarDelegate

@interface ViewControllerName <UISearchBarDelegate>

// your code here

@end

Затем реализуйте следующие методы делегата:

@implementation ViewControllerName

// your code here

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
 darkBg = [[UIControl alloc] initWithFrame:CGRectMake(0, 244, 320, 300)];
 [darkBg setBackgroundColor:[UIColor blackColor]];
 [darkBg addTarget:nil action:@selector(hideKeyboard) forControlEvents:UIControlEventTouchDown];
 [darkBg setAlpha:0.8];
 [UIView beginAnimations:@"slideup" context:nil];
 [darkBg setCenter:CGPointMake(160, 194)];
 [self.view addSubview:darkBg];
 [UIView commitAnimations];
}

- (void)hideKeyboard {
 [UIView beginAnimations:@"fadeou" context:nil];
 [darkBg setAlpha:0.0];
 [UIView commitAnimations];
 [addressField resignFirstResponder];
 [darkBg performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1.0];
 [darkBg release];
}
1 голос
/ 15 июня 2014

Менее хакерское решение - использовать один из методов делегата MKMapView для отклонения клавиатуры.

- (void) mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated {
  if ([self.textField isFirstResponder]) {
    [self.textField resignFirstResponder];
  }
}
1 голос
/ 30 января 2010

Предполагая

UITextView *textView; 

Затем вы можете закрыть клавиатуру, отправив:

[textView resignFirstResponder];

Также: вы можете предпочесть использовать UISearchBar и установить его как navigationItem.titleView ViewController. Это предлагает некоторые хорошие методы делегата.

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