4

我目前正在使用 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

我用键盘通知尝试了同样的事情,它确实有效。这意味着应用程序在完成时无法识别文本大小何时发生变化

4

1 回答 1

6

编辑 1 Apple 已确认我的错误报告并将其与另一个错误报告合并。


我做了一些测试,发现这个问题/错误只在 iOS 8 模拟器中普遍存在,并且UIContentSizeCategoryDidChangeNotification. 其他通知按预期工作,并且UIContentSizeCategoryDidChangeNotification在 iOS 7 模拟器中按预期运行。我已经在雷达中提交了一份错误报告。希望这可以澄清在不久的将来遇到这个问题的人。

编辑 2

现在这似乎已经解决了。此外, Big Nerd Ranch 的这个库确实简化了设置动态类型的整个过程。

于 2014-06-18T08:17:44.583 回答