Уведомление динамического типа не срабатывает

В настоящее время я разрабатываю Swift и столкнулся с проблемой динамической типизации. Я установил этот код

import Foundation
import UIKit

class ExerciseController :UIViewController, UITableViewDataSource, UITableViewDelegate {

  @IBOutlet var exerciseTableView :UITableView

  override func viewDidLoad() {
    super.viewDidLoad()
  }

  override func viewWillAppear(animated: Bool)  {
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "reload", name: UIContentSizeCategoryDidChangeNotification, object: nil)
  }

  override func viewWillDisappear(animated: Bool) {
    NSNotificationCenter.defaultCenter().removeObserver(self, name: UIContentSizeCategoryDidChangeNotification, object: nil)
  }

  func reload() {
    println("reload")
  }

  func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
    return 1
  }

  func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
    return 1
  }

  func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
    let cellIdentifier = "ExerciseCell"
    var cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? UITableViewCell
    if !cell {
      cell = UITableViewCell(style: .Default, reuseIdentifier: cellIdentifier)
    }
    cell!.textLabel.text = "Hello"
    cell!.textLabel.font = UIFont.preferredFontForTextStyle(UIFontTextStyleHeadline)
    return cell
  }
}

Я запускаю свое приложение, а затем перехожу в приложение «Настройки», чтобы изменить размер текста, но селектор уведомлений не вызывается и понятия не имею, почему. Заранее спасибо за решение этой проблемы, любая помощь приветствуется

*Ранее наблюдатели уведомлений устанавливались на viewDidiLoad и deinit, но это тоже не работало

ОБНОВЛЕНИЕ №1

Я попробовал то же самое с уведомлением клавиатуры, и это сработало. Это будет означать, что приложение не распознает изменение размера текста, когда это делается.


person AJ_1310    schedule 06.06.2014    source источник
comment
Снято в темноте, попробуй @objc(reload) func reload() {   -  person David Berry    schedule 07.06.2014
comment
Извините, это не сработало. Похоже, что это не селектор, а приложение не уведомляется о действии размера текста.   -  person AJ_1310    schedule 07.06.2014
comment
Мне удалось воспроизвести вашу проблему в XCode 6. Затем я попробовал ее на реальном устройстве, и она работает правильно, поэтому это должна быть ошибка в XCode, которая будет исправлена ​​​​позже.   -  person Chris    schedule 16.06.2014
comment
@ AJ_1310 Я знаю, что это было давно, но, пожалуйста, смотрите обновление ниже :-)   -  person Chris    schedule 11.08.2014


Ответы (1)


EDIT 1 Компания Apple приняла мое сообщение об ошибке и объединила его с другим сообщением об ошибке.


Я провел небольшое тестирование и обнаружил, что эта проблема/ошибка характерна только для симулятора iOS 8 и UIContentSizeCategoryDidChangeNotification. Другие уведомления работают по назначению, а UIContentSizeCategoryDidChangeNotification ведет себя так, как ожидалось, в симуляторе iOS 7. Я отправил отчет об ошибке в радаре. Надеюсь, что это прояснит для людей, имеющих эту проблему в ближайшем будущем.

ИЗМЕНИТЬ 2

Теперь это, кажется, было исправлено. Более того, эта библиотека от Big Nerd Ranch действительно упрощает весь процесс настройки динамического типа.

person Chris    schedule 18.06.2014