From 0f0333e974f89c805644cb3259e730e8e1cf141c Mon Sep 17 00:00:00 2001 From: Matt Neuburg Date: Tue, 27 Sep 2016 07:11:50 -0700 Subject: [PATCH] update chapter 16 examples so they compile --- .../ch29p946mediaQuery/ViewController.swift | 10 +-- .../ViewController.swift | 64 +++++++++---------- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/bk2ch16p678mediaQuery/ch29p946mediaQuery/ViewController.swift b/bk2ch16p678mediaQuery/ch29p946mediaQuery/ViewController.swift index 3bd3f218a..2515a0f32 100644 --- a/bk2ch16p678mediaQuery/ch29p946mediaQuery/ViewController.swift +++ b/bk2ch16p678mediaQuery/ch29p946mediaQuery/ViewController.swift @@ -57,19 +57,19 @@ class ViewController: UIViewController { let r = UIGraphicsImageRenderer(size:sz) let im1 = r.image { _ in - UIColor.black().setFill() + UIColor.black.setFill() UIBezierPath(ovalIn: CGRect(0,0,sz.height,sz.height)).fill() } let im2 = r.image { _ in - UIColor.red().setFill() + UIColor.red.setFill() UIBezierPath(ovalIn: CGRect(0,0,sz.height,sz.height)).fill() } let im3 = r.image { _ in - UIColor.orange().setFill() + UIColor.orange.setFill() UIBezierPath(ovalIn: CGRect(0,0,sz.height,sz.height)).fill() } @@ -224,7 +224,7 @@ class ViewController: UIViewController { } self.label.text = "" let player = MPMusicPlayerController.applicationMusicPlayer() - guard n.object === player else { return } // just playing safe + guard (n.object as AnyObject) === player else { return } // just playing safe guard let title = player.nowPlayingItem?.title else {return} let ix = player.indexOfNowPlayingItem guard ix != NSNotFound else {return} @@ -233,7 +233,7 @@ class ViewController: UIViewController { func timerFired(_: Any) { let player = MPMusicPlayerController.applicationMusicPlayer() - guard let item = player.nowPlayingItem where player.playbackState != .stopped else { + guard let item = player.nowPlayingItem, player.playbackState != .stopped else { self.prog.isHidden = true return } // diff --git a/bk2ch16p687AVQueuePlayer/ch29p952AVQueuePlayer/ViewController.swift b/bk2ch16p687AVQueuePlayer/ch29p952AVQueuePlayer/ViewController.swift index 5ab009705..bfc6f463a 100644 --- a/bk2ch16p687AVQueuePlayer/ch29p952AVQueuePlayer/ViewController.swift +++ b/bk2ch16p687AVQueuePlayer/ch29p952AVQueuePlayer/ViewController.swift @@ -56,7 +56,7 @@ class ViewController: UIViewController { var avplayer : AVPlayer! var qp : AVQueuePlayer! var items = [AVPlayerItem]() - var ob : AnyObject! + var ob : Any! @IBOutlet var prog : UIProgressView! @IBOutlet var label : UILabel! @@ -185,7 +185,7 @@ class ViewController: UIViewController { } - override func observeValue(forKeyPath keyPath: String?, of object: AnyObject?, change: [NSKeyValueChangeKey : AnyObject]?, context: UnsafeMutablePointer?) { + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { if keyPath == #keyPath(AVQueuePlayer.currentItem) { self.changed() } @@ -243,37 +243,37 @@ class ViewController: UIViewController { // ======== respond to remote controls - override func canBecomeFirstResponder() -> Bool { - return true + override func viewDidLoad() { + super.viewDidLoad() + let scc = MPRemoteCommandCenter.shared() + scc.togglePlayPauseCommand.addTarget(self, action: #selector(doPlayPause)) + scc.playCommand.addTarget(self, action:#selector(doPlay)) + scc.pauseCommand.addTarget(self, action:#selector(doPause)) } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - self.becomeFirstResponder() - UIApplication.shared.beginReceivingRemoteControlEvents() + + func doPlayPause(_ event:MPRemoteCommandEvent) { + print("playpause") + let p = self.player.player! + if p.isPlaying { p.pause() } else { p.play() } } - - override func remoteControlReceived(with event: UIEvent?) { - let rc = event!.subtype - print("received remote control \(rc.rawValue)") - - let p = self.curplayer! - switch rc { - case .remoteControlTogglePlayPause: - if p.playing { p.pause() } else { p.doPlay() } - case .remoteControlPlay: - p.doPlay() - case .remoteControlPause: - p.pause() - case .remoteControlNextTrack: - if let p = p as? AVQueuePlayer { - p.advanceToNextItem() - } - default:break - } - + func doPlay(_ event:MPRemoteCommandEvent) { + print("play") + let p = self.player.player! + p.play() } - - - + func doPause(_ event:MPRemoteCommandEvent) { + print("pause") + let p = self.player.player! + p.pause() + } + + deinit { + let scc = MPRemoteCommandCenter.shared() + scc.togglePlayPauseCommand.removeTarget(self) + scc.playCommand.removeTarget(self) + scc.pauseCommand.removeTarget(self) + } + + + }