私は、View Controllerが表示されているときにFirstResponderになる必要があるUISearchControllerにあるUITextFieldを持っています。UITextField in UISearchController BecomeFirstResponder
ViewDidLoadでは、UISearchControllerが構築されます。私はUISearchControllerからのUITextFieldを取得し、BecomeFirstResponder
にpublic override void ViewDidLoad(bool animated)
{
base.ViewDidLoad();
BuildSearchController();
SearchController.SearchBar.BecomeFirstResponder();
}
private void BuildSearchController()
{
UIFont MyFont = UIFont.FromName("Helvetica", 20f);
SearchController = new UISearchController(ResultsTableController)
{
WeakDelegate = this,
DimsBackgroundDuringPresentation = false,
WeakSearchResultsUpdater = this,
};
SearchController.SearchBar.ScopeButtonTitles = new string[5] { "Account", "Name", "Service Address", "Phone", "SSN" };
UITextField SearchField = (UITextField)SearchController.SearchBar.Subviews[0].Subviews[2];
SearchField.Font = MyFont;
SearchController.SearchBar.ShowsCancelButton = false;
SearchController.SearchBar.SetScopeBarButtonTitle(new UITextAttributes() { Font = MyFont }, UIControlState.Normal);
SearchController.SearchBar.SizeToFit();
SearchController.SearchBar.SelectedScopeButtonIndex = 1;
SearchController.SearchBar.SetShowsCancelButton(false, false);
UISegmentedControl TempSegControl = SearchController.SearchBar.Subviews[0].Subviews[0].Subviews[1] as UISegmentedControl;
TempSegControl.BackgroundColor = UIColor.FromRGBA(0, 122, 255, 255);
TempSegControl.TintColor = UIColor.White;
TempSegControl.Layer.BorderWidth = 1;
TempSegControl.Layer.CornerRadius = 6;
TempSegControl.Layer.BorderColor = UIColor.White.CGColor;
SearchController.SearchBar.BarTintColor = UIColor.FromRGBA(232, 232, 232, 255);
SearchController.HidesNavigationBarDuringPresentation = false;
SearchField.BecomeFirstResponder();
TableView.TableHeaderView = SearchController.SearchBar;
SearchController.SearchBar.WeakDelegate = this;
}
public override void ViewDidAppear(bool animated)
{
UITextField SearchBox = SearchController.SearchBar.Subviews[0].Subviews[2] as UITextField;
if (SearchBox.CanBecomeFirstResponder)
{
SearchBox.BecomeFirstResponder();
}
base.ViewWillAppear(animated);
}
それを伝えるViewDidAppearで
ファーストレスポンダになることができないので、UITextFieldには、ファーストレスポンダになることはありません。なぜ、UITextFieldが最初の再認証者にならないのですか?
私はその呼び出しをViewDidAppearメソッドに移動しました。 UISearchControllerのUITextFieldにはまだフォーカスがありません。コントローラが表示されたら、ユーザはUITextFieldの中で触れることなく入力を開始できるようにしてほしい –
ありがとうございました。ここにはC#のバージョンがあります。 [Export( "didPresentSearchController:")] パブリック仮想void DidPresentSearchController(UISearchController searchController) { SearchController.SearchBar.Subviews [0] .Subviews [2] .BecomeFirstResponder(); } –