resignfirstresponder вылетает мое приложение IOS - PullRequest
0 голосов
/ 27 февраля 2012

Я новичок в IOS и не могу заставить его работать, в моем приложении есть поле ввода, из которого я хочу скрыть клавиатуру всякий раз, когда пользователь нажимает клавишу возврата или связанную кнопку (searchGo)

Вот мой код:

mainViewController.h

 @interface kepnMainViewController : UIViewController <kepnFlipsideViewControllerDelegate, MKMapViewDelegate>
{
    MKMapView *_mapView;
    IBOutlet UITextField *searchBox;
    IBOutlet UIBarButtonItem *searchGo; 
    IBOutlet UIBarButtonItem *searchNearby;
    MKAnnotationView *annotationView;
}
@property (strong, nonatomic) MKMapView *_mapView;
@property (strong, nonatomic) MapAnnotation *annotation;
@property (strong, nonatomic) UIPopoverController *flipsidePopoverController;
@property (strong, nonatomic) MKAnnotationView *annotationView;
@property (strong, nonatomic) UIBarButtonItem *searchGo; 



- (IBAction)showInfo:(id)sender;
- (IBAction)searchGo:(id)sender;
- (IBAction)showNearby:(id)sender;
- (IBAction)searchBoxReturn:(id)sender;

- (void) setPlaceMarker: (CLLocationCoordinate2D) coord :(NSString*) title :(NSString*) subtitle; 
@end

Подходящий фрагмент .m

-(IBAction)searchGo:(id)sender
{
    NSLog(@"sender object %@",sender); 


         [sender resignFirstResponder];


    NSLog(@"search button pressed and textbox = %@",searchBox.text); 


}



-(IBAction)searchBoxReturn:(id)sender
{
    NSLog(@"search box return "); 

    [sender resignFirstResponder];

}

Извините, если это глупый вопрос, но что я делаю не так ???

Ответы [ 3 ]

2 голосов
/ 27 февраля 2012

UIBarButtonItem не является UIView и, следовательно, определенно не UIResponder.Вместо этого это подкласс NSObject, который не отвечает на - (void)resignFirstResponder.

(решение: удалите строки [sender resignFirstResponder];)

1 голос
/ 27 февраля 2012

Таким образом, если ваше представление запрограммировано вручную, вы можете добавить следующую проверку в свой код:

 if ( [sender isKindOf: [UIResponder class]] == YES && [(UIResponder*)sender canResignFirstResponder] == YES )
     [sender resignFirstResponder];
0 голосов
/ 27 февраля 2012

Если вы хотите скрыть клавиатуру при нажатии кнопки, предполагая, что ваш поисковый ящик является текущим респондентом, чем вы должны написать

[searchBox resignFirstResponder]; // This will close keyboard
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...