UISearchController - Black Rectangle












0















I'm implementing a simple tableViewController with UISearchcontroller.



The problem is that every time that I press the search field then a black rectangle appear right after the keyboard shows up.



I also tried to use definesPresentationContext and searchBarStyle but it keep showing the rectangle. On the other hand, it looks like doesn't happen in the simulator since there is no keyboard.



Update: Below some photos.



ViewController:



class ListGlobalViewController: UITableViewController, StoryboardSceneBased, ViewModelBased {

static var sceneStoryboard: UIStoryboard = UIStoryboard(name: "DataSelectorViewController", bundle: Bundle.main)

// --------------------
// MARK: - Properties
// --------------------
var viewModel: ListGlobalViewModel!
private let disposeBag = DisposeBag()


private let searchController: UISearchController = {
let searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.searchBarStyle = .minimal
searchController.dimsBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = true
return searchController
}()

override func viewDidLoad() {
super.viewDidLoad()
tableView.tableFooterView = UIView()
configure(with: viewModel)

navigationItem.largeTitleDisplayMode = .automatic
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
}

override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
self.searchController.isActive = false
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
}

// --------------------
// MARK: - Functions
// --------------------
func configure(with viewModel: ListGlobalViewModel) {
self.tableView.delegate = nil
self.tableView.dataSource = nil

viewModel.outputs.listDataObservable.bind(to: self.tableView.rx.items(cellIdentifier: "listGlobalCell", cellType: ListGlobalCell.self)) { (index, model, cell) in
cell.model = model
}.disposed(by: disposeBag)

searchController.searchBar.rx.text.filterNil().throttle(1, scheduler: MainScheduler.instance).distinctUntilChanged().subscribe(viewModel.inputs.searchBarObservable).disposed(by: disposeBag)

}
}


Navigation Default Values:



let controller = UINavigationController()
controller.navigationBar.isTranslucent = false
controller.navigationBar.prefersLargeTitles = true
controller.definesPresentationContext = true
controller.navigationBar.titleTextAttributes = [ NSAttributedString.Key.font: UIFont.bold(size: 24), NSAttributedString.Key.foregroundColor: UIColor.black ]

if #available(iOS 11, *) {
controller.navigationBar.largeTitleTextAttributes = [ NSAttributedString.Key.font: UIFont.bold(size: 33), NSAttributedString.Key.foregroundColor: UIColor.black ]
}
return controller


Pictures:
Normal State



Bugged
Bugged state










share|improve this question



























    0















    I'm implementing a simple tableViewController with UISearchcontroller.



    The problem is that every time that I press the search field then a black rectangle appear right after the keyboard shows up.



    I also tried to use definesPresentationContext and searchBarStyle but it keep showing the rectangle. On the other hand, it looks like doesn't happen in the simulator since there is no keyboard.



    Update: Below some photos.



    ViewController:



    class ListGlobalViewController: UITableViewController, StoryboardSceneBased, ViewModelBased {

    static var sceneStoryboard: UIStoryboard = UIStoryboard(name: "DataSelectorViewController", bundle: Bundle.main)

    // --------------------
    // MARK: - Properties
    // --------------------
    var viewModel: ListGlobalViewModel!
    private let disposeBag = DisposeBag()


    private let searchController: UISearchController = {
    let searchController = UISearchController(searchResultsController: nil)
    searchController.searchBar.searchBarStyle = .minimal
    searchController.dimsBackgroundDuringPresentation = false
    searchController.hidesNavigationBarDuringPresentation = true
    return searchController
    }()

    override func viewDidLoad() {
    super.viewDidLoad()
    tableView.tableFooterView = UIView()
    configure(with: viewModel)

    navigationItem.largeTitleDisplayMode = .automatic
    navigationItem.searchController = searchController
    navigationItem.hidesSearchBarWhenScrolling = false
    }

    override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    }

    override func viewDidDisappear(_ animated: Bool) {
    super.viewDidDisappear(animated)
    self.searchController.isActive = false
    }
    override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    }

    // --------------------
    // MARK: - Functions
    // --------------------
    func configure(with viewModel: ListGlobalViewModel) {
    self.tableView.delegate = nil
    self.tableView.dataSource = nil

    viewModel.outputs.listDataObservable.bind(to: self.tableView.rx.items(cellIdentifier: "listGlobalCell", cellType: ListGlobalCell.self)) { (index, model, cell) in
    cell.model = model
    }.disposed(by: disposeBag)

    searchController.searchBar.rx.text.filterNil().throttle(1, scheduler: MainScheduler.instance).distinctUntilChanged().subscribe(viewModel.inputs.searchBarObservable).disposed(by: disposeBag)

    }
    }


    Navigation Default Values:



    let controller = UINavigationController()
    controller.navigationBar.isTranslucent = false
    controller.navigationBar.prefersLargeTitles = true
    controller.definesPresentationContext = true
    controller.navigationBar.titleTextAttributes = [ NSAttributedString.Key.font: UIFont.bold(size: 24), NSAttributedString.Key.foregroundColor: UIColor.black ]

    if #available(iOS 11, *) {
    controller.navigationBar.largeTitleTextAttributes = [ NSAttributedString.Key.font: UIFont.bold(size: 33), NSAttributedString.Key.foregroundColor: UIColor.black ]
    }
    return controller


    Pictures:
    Normal State



    Bugged
    Bugged state










    share|improve this question

























      0












      0








      0








      I'm implementing a simple tableViewController with UISearchcontroller.



      The problem is that every time that I press the search field then a black rectangle appear right after the keyboard shows up.



      I also tried to use definesPresentationContext and searchBarStyle but it keep showing the rectangle. On the other hand, it looks like doesn't happen in the simulator since there is no keyboard.



      Update: Below some photos.



      ViewController:



      class ListGlobalViewController: UITableViewController, StoryboardSceneBased, ViewModelBased {

      static var sceneStoryboard: UIStoryboard = UIStoryboard(name: "DataSelectorViewController", bundle: Bundle.main)

      // --------------------
      // MARK: - Properties
      // --------------------
      var viewModel: ListGlobalViewModel!
      private let disposeBag = DisposeBag()


      private let searchController: UISearchController = {
      let searchController = UISearchController(searchResultsController: nil)
      searchController.searchBar.searchBarStyle = .minimal
      searchController.dimsBackgroundDuringPresentation = false
      searchController.hidesNavigationBarDuringPresentation = true
      return searchController
      }()

      override func viewDidLoad() {
      super.viewDidLoad()
      tableView.tableFooterView = UIView()
      configure(with: viewModel)

      navigationItem.largeTitleDisplayMode = .automatic
      navigationItem.searchController = searchController
      navigationItem.hidesSearchBarWhenScrolling = false
      }

      override func viewDidAppear(_ animated: Bool) {
      super.viewDidAppear(animated)
      }

      override func viewDidDisappear(_ animated: Bool) {
      super.viewDidDisappear(animated)
      self.searchController.isActive = false
      }
      override func viewWillDisappear(_ animated: Bool) {
      super.viewWillDisappear(animated)
      }

      // --------------------
      // MARK: - Functions
      // --------------------
      func configure(with viewModel: ListGlobalViewModel) {
      self.tableView.delegate = nil
      self.tableView.dataSource = nil

      viewModel.outputs.listDataObservable.bind(to: self.tableView.rx.items(cellIdentifier: "listGlobalCell", cellType: ListGlobalCell.self)) { (index, model, cell) in
      cell.model = model
      }.disposed(by: disposeBag)

      searchController.searchBar.rx.text.filterNil().throttle(1, scheduler: MainScheduler.instance).distinctUntilChanged().subscribe(viewModel.inputs.searchBarObservable).disposed(by: disposeBag)

      }
      }


      Navigation Default Values:



      let controller = UINavigationController()
      controller.navigationBar.isTranslucent = false
      controller.navigationBar.prefersLargeTitles = true
      controller.definesPresentationContext = true
      controller.navigationBar.titleTextAttributes = [ NSAttributedString.Key.font: UIFont.bold(size: 24), NSAttributedString.Key.foregroundColor: UIColor.black ]

      if #available(iOS 11, *) {
      controller.navigationBar.largeTitleTextAttributes = [ NSAttributedString.Key.font: UIFont.bold(size: 33), NSAttributedString.Key.foregroundColor: UIColor.black ]
      }
      return controller


      Pictures:
      Normal State



      Bugged
      Bugged state










      share|improve this question














      I'm implementing a simple tableViewController with UISearchcontroller.



      The problem is that every time that I press the search field then a black rectangle appear right after the keyboard shows up.



      I also tried to use definesPresentationContext and searchBarStyle but it keep showing the rectangle. On the other hand, it looks like doesn't happen in the simulator since there is no keyboard.



      Update: Below some photos.



      ViewController:



      class ListGlobalViewController: UITableViewController, StoryboardSceneBased, ViewModelBased {

      static var sceneStoryboard: UIStoryboard = UIStoryboard(name: "DataSelectorViewController", bundle: Bundle.main)

      // --------------------
      // MARK: - Properties
      // --------------------
      var viewModel: ListGlobalViewModel!
      private let disposeBag = DisposeBag()


      private let searchController: UISearchController = {
      let searchController = UISearchController(searchResultsController: nil)
      searchController.searchBar.searchBarStyle = .minimal
      searchController.dimsBackgroundDuringPresentation = false
      searchController.hidesNavigationBarDuringPresentation = true
      return searchController
      }()

      override func viewDidLoad() {
      super.viewDidLoad()
      tableView.tableFooterView = UIView()
      configure(with: viewModel)

      navigationItem.largeTitleDisplayMode = .automatic
      navigationItem.searchController = searchController
      navigationItem.hidesSearchBarWhenScrolling = false
      }

      override func viewDidAppear(_ animated: Bool) {
      super.viewDidAppear(animated)
      }

      override func viewDidDisappear(_ animated: Bool) {
      super.viewDidDisappear(animated)
      self.searchController.isActive = false
      }
      override func viewWillDisappear(_ animated: Bool) {
      super.viewWillDisappear(animated)
      }

      // --------------------
      // MARK: - Functions
      // --------------------
      func configure(with viewModel: ListGlobalViewModel) {
      self.tableView.delegate = nil
      self.tableView.dataSource = nil

      viewModel.outputs.listDataObservable.bind(to: self.tableView.rx.items(cellIdentifier: "listGlobalCell", cellType: ListGlobalCell.self)) { (index, model, cell) in
      cell.model = model
      }.disposed(by: disposeBag)

      searchController.searchBar.rx.text.filterNil().throttle(1, scheduler: MainScheduler.instance).distinctUntilChanged().subscribe(viewModel.inputs.searchBarObservable).disposed(by: disposeBag)

      }
      }


      Navigation Default Values:



      let controller = UINavigationController()
      controller.navigationBar.isTranslucent = false
      controller.navigationBar.prefersLargeTitles = true
      controller.definesPresentationContext = true
      controller.navigationBar.titleTextAttributes = [ NSAttributedString.Key.font: UIFont.bold(size: 24), NSAttributedString.Key.foregroundColor: UIColor.black ]

      if #available(iOS 11, *) {
      controller.navigationBar.largeTitleTextAttributes = [ NSAttributedString.Key.font: UIFont.bold(size: 33), NSAttributedString.Key.foregroundColor: UIColor.black ]
      }
      return controller


      Pictures:
      Normal State



      Bugged
      Bugged state







      swift cocoa navigation tableview ios11






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Dec 30 '18 at 17:25









      Dex SebasDex Sebas

      107210




      107210
























          1 Answer
          1






          active

          oldest

          votes


















          0














          Use UITextField instead if UISearchBar. You can give any design to uitextfield. UISearch bar has limited designable attributes. Also you can reach any search function with textfield.






          share|improve this answer
























          • Yes but that’s not a real solution. Thanks anyways

            – Dex Sebas
            Jan 2 at 11:19











          • I think, this problem is about keyboard size. You can use this repo. github.com/hackiftekhar/IQKeyboardManager

            – codeByThey
            Jan 2 at 11:46











          • I was already using IQKeyboard. Its enabled by default and I tried IQKeyboardManager.shared().isEnabled = false (disabling) and the black rectangle is gone.

            – Dex Sebas
            Jan 2 at 15:54











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53979820%2fuisearchcontroller-black-rectangle%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          Use UITextField instead if UISearchBar. You can give any design to uitextfield. UISearch bar has limited designable attributes. Also you can reach any search function with textfield.






          share|improve this answer
























          • Yes but that’s not a real solution. Thanks anyways

            – Dex Sebas
            Jan 2 at 11:19











          • I think, this problem is about keyboard size. You can use this repo. github.com/hackiftekhar/IQKeyboardManager

            – codeByThey
            Jan 2 at 11:46











          • I was already using IQKeyboard. Its enabled by default and I tried IQKeyboardManager.shared().isEnabled = false (disabling) and the black rectangle is gone.

            – Dex Sebas
            Jan 2 at 15:54
















          0














          Use UITextField instead if UISearchBar. You can give any design to uitextfield. UISearch bar has limited designable attributes. Also you can reach any search function with textfield.






          share|improve this answer
























          • Yes but that’s not a real solution. Thanks anyways

            – Dex Sebas
            Jan 2 at 11:19











          • I think, this problem is about keyboard size. You can use this repo. github.com/hackiftekhar/IQKeyboardManager

            – codeByThey
            Jan 2 at 11:46











          • I was already using IQKeyboard. Its enabled by default and I tried IQKeyboardManager.shared().isEnabled = false (disabling) and the black rectangle is gone.

            – Dex Sebas
            Jan 2 at 15:54














          0












          0








          0







          Use UITextField instead if UISearchBar. You can give any design to uitextfield. UISearch bar has limited designable attributes. Also you can reach any search function with textfield.






          share|improve this answer













          Use UITextField instead if UISearchBar. You can give any design to uitextfield. UISearch bar has limited designable attributes. Also you can reach any search function with textfield.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Dec 30 '18 at 19:59









          codeByTheycodeByThey

          744423




          744423













          • Yes but that’s not a real solution. Thanks anyways

            – Dex Sebas
            Jan 2 at 11:19











          • I think, this problem is about keyboard size. You can use this repo. github.com/hackiftekhar/IQKeyboardManager

            – codeByThey
            Jan 2 at 11:46











          • I was already using IQKeyboard. Its enabled by default and I tried IQKeyboardManager.shared().isEnabled = false (disabling) and the black rectangle is gone.

            – Dex Sebas
            Jan 2 at 15:54



















          • Yes but that’s not a real solution. Thanks anyways

            – Dex Sebas
            Jan 2 at 11:19











          • I think, this problem is about keyboard size. You can use this repo. github.com/hackiftekhar/IQKeyboardManager

            – codeByThey
            Jan 2 at 11:46











          • I was already using IQKeyboard. Its enabled by default and I tried IQKeyboardManager.shared().isEnabled = false (disabling) and the black rectangle is gone.

            – Dex Sebas
            Jan 2 at 15:54

















          Yes but that’s not a real solution. Thanks anyways

          – Dex Sebas
          Jan 2 at 11:19





          Yes but that’s not a real solution. Thanks anyways

          – Dex Sebas
          Jan 2 at 11:19













          I think, this problem is about keyboard size. You can use this repo. github.com/hackiftekhar/IQKeyboardManager

          – codeByThey
          Jan 2 at 11:46





          I think, this problem is about keyboard size. You can use this repo. github.com/hackiftekhar/IQKeyboardManager

          – codeByThey
          Jan 2 at 11:46













          I was already using IQKeyboard. Its enabled by default and I tried IQKeyboardManager.shared().isEnabled = false (disabling) and the black rectangle is gone.

          – Dex Sebas
          Jan 2 at 15:54





          I was already using IQKeyboard. Its enabled by default and I tried IQKeyboardManager.shared().isEnabled = false (disabling) and the black rectangle is gone.

          – Dex Sebas
          Jan 2 at 15:54


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53979820%2fuisearchcontroller-black-rectangle%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Monofisismo

          Angular Downloading a file using contenturl with Basic Authentication

          Olmecas