2012-02-22 166 views
0

我在我的应用中使用了UISearchBar。当我在模拟器上运行时,一切都很好。在设备上不起作用。在设备上,我的搜索栏框架正在改变,但keybord未显示。 NSlog s正在工作。我的代码是在这里:UISearchBar在模拟器上工作,但不能在设备上工作

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 

    NSLog(@"wrote"); 
} 

-(BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar { 

    [self.mySearchBar setFrame:CGRectMake(0,100,mySearchBar.frame.size.width,mySearchBar.frame.size.height)]; 
    mySearchBar.showsCancelButton=TRUE; 
    [email protected]"nowwrite"; 
    NSLog(@"chosed");  
} 

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { 

    NSLog(@"cancel"); 
} 

- (void)viewDidLoad 
{ 
    mySearchBar.delegate=self; 
    [super viewDidLoad]; 
} 

和我的.h文件

@interface sehirRehberi : UIViewController <UISearchBarDelegate,MKMapViewDelegate,CLLocationManagerDelegate,UINavigationControllerDelegate> { 
    IBOutlet UISearchBar *mySearchBar; 
} 

@property(retain, nonatomic) UISearchBar *mySearchBar; 
+0

很难理解正在发生什么。尝试编辑您的问题并添加日志错误。谢谢。 – 2012-02-22 22:21:33

+0

我还没有错误日志。因为我没有错误。一切似乎都没问题。但uisearchbar不工作。我的nslogs工作,但keybord没有看到 – ali10 2012-02-22 22:54:57

+0

对不起,我在想一个错误。这很奇怪。附:类名通常以大写字母开头。 – 2012-02-22 23:01:37

回答

0

是否已进行了视图急救员?这是键盘显示所必需的。我不确定它为什么在模拟器上工作,但您应该在viewDidLoad方法中调用[self becomeFirstResponder];以使视图接收键盘事件并显示键盘。完成后(viewWillDisappear等),只需拨打[self resignFirstResponder];即可。我认为这是你的问题。没有更多的解释/代码很难说清楚。

+0

我在点击的方法中调用了becomefirstresponder:就像这样clickShouldBeganTextEdit。这是错的吗? (sory,我现在不在我的电脑上) – ali10 2012-02-23 12:29:48

+0

是的,当viewDidLoad或者viewDidAppear是应该使它工作的时候调用它。 – 2012-02-23 20:43:20

+0

身份证没有工作Dylan – ali10 2012-02-23 22:08:42

0

我有类似的问题,'UISearchBar'出现在模拟器中,但没有在实际的设备中。我通过调用带有NibName的构造函数解决了这个问题,因为我将UISearchBar放置在nib文件中。

[MyUITableViewController initWithNibName:@"MyUITableViewController" bundle:nil]; 
相关问题