2010-11-24 10 views
1

私はUISearchBarですが、最初の応答者であってもキーボードは表示されません。私はラップトップのキーボードを使用して検索バーに入力を開始することができ、検索バーの中に何を入力するかを見ることができますが、シミュレータのキーボードと実際のiPadは表示されません。 iOS 3.2ではうまくいきましたが、今朝iOS 4.2にアップデートした後は機能しなくなりました。 以下は関連コードです キーボードは表示されていません

 
// Text Field that when touched will fire a search view that contains the search bar 
- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    [textField resignFirstResponder]; 

    UIViewController *detailViewController = nil; 

     ImplementedSearchViewController *searchController = 
[[ImplementedSearchViewController alloc] initWithNibName:@"ImplementedSearchView" bundle:nil]; 
     ... 
     detailViewController = searchController; 

     MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
     UINavigationController *nav = (UINavigationController *) 
[delegate.splitViewController.viewControllers objectAtIndex: 0]; 
     NSArray *viewControllers = [NSArray arrayWithObjects:nav, 
detailViewController, nil]; 
     self.splitViewController.viewControllers = viewControllers; 

     HomeViewController *hHomeController = [nav.viewControllers objectAtIndex:0]; 

     // Dismiss the popover if it's present. 
     if (homeController.popoverController != nil) { 
      [homeController.popoverController dismissPopoverAnimated:YES]; 
     } 

     // Configure the new view controller's popover button 
(after the view has been displayed and its toolbar/navigation bar has been created). 
     if (homeController.rootPopoverButtonItem != nil) { 
      [detailViewController 
showRootPopoverButtonItem:homeController.rootPopoverButtonItem]; 
     } 

     [detailViewController release]; 
} 

 
// Inside the viewDidLoad of the search view 
- (void)viewDidLoad { 
    self.table.frame = CGRectMake(table.frame.origin.x, table.frame.origin.y, table.frame.size.width, 680); 
    self.table.backgroundColor = [UIColor colorWithRed:239/255.0 green:244/255.0 blue:255/255.0 alpha:1.0]; 
    // searchBar is a UISearchBar 
    [self.searchBar becomeFirstResponder]; 
} 

viewDidLoadのui検索バーはnilではありません。

これについてのご意見はありますか?

おかげで、 ミハイ

答えて

0

私は別の場所で同じUIの検索バーを使用しています。 2つ以外のすべてで動作します。私は問題が最初のレスポンダーとして辞任していないテキストフィールド(私はそのテキストフィールドでresignFirstResponderと呼ばれていました)と関係していると考えています。それが動作する場所の1つでは、テキストフィールドを使用して検索バーをトリガーしますが、テキストフィールドデリゲートメソッド(textFieldDidBeginEditingなど)ではなくセレクタを使用しています。セレクタの使用からデリゲートメソッドの使用に切り替えると、動作が停止し、同じ問題が発生します(キーボードは表示されません)。私は、それがうまくいかない2つのケースでは、デリゲートメソッドの使用からセレクタの使用への切り替えがソリューションになると思っていましたが、それはできませんでした。私がやったことは、テキストフィールドの使用からボタンの使用に切り替えることでした。ある意味では、テキストフィールドを使って何も書かない場合(私はそれを検索バーを起動するためだけに使っていました)、テキストフィールドを使って意味をなさない。

0

私が確認できるのは、検索バーを優先して最初の応答者を辞めると、iOS 4.3のiPad上の問題が解決されることです。私の場合、UIEventSubtypeMotionShakeに応答するUIViewControllerがありました。あなたは明示的にresignFirstResponderを呼び出す前に(!) UIViewControllerをビュー階層から削除して機能させる必要がありました。

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 
{ 
    if (motion == UIEventSubtypeMotionShake){ 
    ... 
    } 
} 

... 

[someViewController becomeFirstResponder]; 

...

[someViewController resignFirstResponder]; 
[[someViewController view ] removeFromSuperview]; 

...

[searchViewController. searchbar becomeFirstResponder]; 
(私の場合は私が代わりにウィンドウにSearchcontrollerをカバーするUINavigationControllerを含むタブで、UITabBarControllerを含む階層を追加しました)

iPhoneでこのようなことが必要でなかった理由はわかりません。

1

私はtextFieldDidBeginEditing:(UITextField *)textFieldデリゲートメソッドで検索バーを表示していました。

キーボードが表示されませんでした。だからfirstResponderとしてその最初の辞任textField。すなわち、 そして

[textField resignFirstResponder]; 

それは

0
[self.searchDisplayController setActive: YES animated: YES]; 
    self.searchDisplayController.searchBar.hidden = NO; 
    [self.searchDisplayController.searchBar becomeFirstResponder]; 
を動作遅延

[self performSelector:@selector(callSearchBar) withObject:NULL afterDelay:0.2]; 

-(void)callSearchBar{ 
[self.searchDisplayController setActive: YES animated: YES]; 
self.searchDisplayController.searchBar.hidden = NO; 
[self.searchDisplayController.searchBar becomeFirstResponder]; 

}

でメソッドを呼び出します

マン(https://stackoverflow.com/users/871079/mann)からのこの回答は私のために働いた。どうもありがとうございました。

関連する問題