[英]Why UISearchBar does not get Focus even after it is set as a first responder?
當UIViewController第二次被推送到導航控制器時,為什么UISearchBar沒有得到Focus並且鍵盤沒有出現? 似乎整個視圖中的任何元素都沒有焦點。
我的用例 :我有2個視圖控制器:A和B.轉換是A-> B. A,B被推送到導航控制器。
我的代碼 :在B UIViewController上創建了與搜索欄的IBOutlet連接:
@property (weak, nonatomic) IBOutlet UISearchBar *mySearchBar;
mySearchBar的代表也已設置。 我在viewDidAppear
方法中將焦點放在B UIViewController中的搜索viewDidAppear
:
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self performSelector:@selector(setCorrectFocus) withObject:NULL afterDelay:0.2];
}
-(void) setCorrectFocus {
[self.mySearchBar becomeFirstResponder];
}
控制器之間的轉換是通過以下代碼手動完成的:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStoryboard" bundle:nil];
AController *a = [storyboard instantiateViewControllerWithIdentifier:@"A"];
[self.navigationController pushViewController:a animated:NO];
試試這個
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self setCorrectFocus];
}
-(void)setCorrectFocus
{
[self.mySearchBar becomeFirstResponder];
}
經過長時間的搜索,我發現了錯 在故事板的某處,UISearchBar的舊連接名為mySearchbar。 我必須糾正的另一件事是該方法
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar;
每次我回到之前的控制器時都返回NO
。 但它應該返回YES
以便下次能夠將焦點設置在搜索欄上。
與之相似 - 在UITextView的鍵盤附件中有一個UISearchBar,甚至在調用[self.searchBar becomeFirstResponder]
之后,文本視圖仍然接收到鍵盤輸入。
這是最終幫助的:
[self.searchBar.window makeKeyAndVisible];
顯然,鍵盤附件是與UITextField不同的UIWindow的一部分。
注意:要繼續在文本視圖中鍵入,您應該調用類似[self.textView.window makeKeyAndVisible];
...
你有沒有嘗試過添加self.mySearchBar.delegate = self;
你應該在你的財產中使用strong
@property (strong, nonatomic) IBOutlet UISearchBar *mySearchBar;
始終為您的財產設置強大的IBOutlet。 當您從navigationController彈出B時,mySearchBar已經釋放,所以你回到B,[self.mySearchBar becomeFirstResponder]不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.