resignfirstresponder崩溃我的ios应用程序
问题描述:
我是IOS的新手,似乎无法得到这个工作,我有一个输入在我的应用程序,从中我想要隐藏键盘,每当用户按下返回或关联按钮(searchGo)resignfirstresponder崩溃我的ios应用程序
以下是我的代码:
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];
}
对不起,如果这是一个愚蠢的问题,但我做错了什么。
答
UIBarButtonItem
不是一个UIView
因此绝对不是UIResponder
。相反,它是NSObject
的一个子类,它不响应- (void)resignFirstResponder
。
(解决方案:去掉[sender resignFirstResponder];
线)
答
如果你想隐藏keybord按钮自来水假设你的搜索框是当前的响应比你应该写
[searchBox resignFirstResponder]; // This will close keyboard
答
所以,如果你的观点是手动编程比您可能会将以下检查添加到您的代码中:
if ([sender isKindOf: [UIResponder class]] == YES && [(UIResponder*)sender canResignFirstResponder] == YES)
[sender resignFirstResponder];
是否将Interface Builder(IB)中的属性连接到GUI元素,或者是否有编程视图?然后,你可以检查你的发送者是否是一种UIResponder(如果([sender isKindOf:[UIResponder class]])...),并且允许它退出第一个响应者(if([(UIResponder *))发件人canResignFirstResponder]))...) – GeT 2012-02-27 18:27:22
@GeT编程主要是 – 2012-02-27 18:30:06