我知道这个问题已经被问过很多次了,但是我仍在学习,我在S.O中尝试了所有可能的解决方案。而且我还没有碰到一次运气。这就是问题所在:
代码如下:
视图控制器
import UIKit
import TVUIKit
class SecondViewController: UIViewController {
@IBOutlet weak var myView: UIView!
@IBOutlet weak var myCollection: MyCollection!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
}
extension SecondViewController: UICollectionViewDataSource {
func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath) as! MyCell
cell.myPoster.title! = "Header " + String(indexPath.row + 1)
cell.myPoster.tag = indexPath.row + 1
cell.posterTapAction = { cell in
print("Header is: \(cell.myPoster.title!)")
}
return cell
}
}
extension SecondViewController: UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
// This one works - but that's not what I am looking for
print("From didSelectItemAt indexPath: \(indexPath.item + 1)")
}
}
收藏夹视图
import UIKit
class MyCollection: UICollectionView {
override func awakeFromNib() {
super.awakeFromNib()
}
override func layoutSubviews() {
super.layoutSubviews()
}
}
单元格
import UIKit
import TVUIKit
class MyCell: UICollectionViewCell {
var posterTapAction: ((MyCell) -> Void)?
@IBOutlet weak var myPoster: TVPosterView!
@IBAction func myAction(_ sender: TVPosterView) {
posterTapAction?(self)
print("Poster pressed \(sender.tag)")
}
}
关于我所缺少的任何想法吗?我很乐意在按下海报后设法打印出虚拟字符串。
我还尝试了使用选择器和委托的解决方案,但均无效果。因此,请让我们用closures专注于这个特定的解决方案。谢谢!
答案 0 :(得分:1)
我终于找到了。像往常一样,这是由于tvOS的关注。基本上,单元必须不可聚焦,以便单元内的UIControl元素(在我的情况下为TVPosterView,但可以是任何UIControl)将成为聚焦的元素。之所以令人迷惑,是因为它在图形上确实看起来像海报具有焦点(可以将海报旋转一点)。
解决方案是将collectionView(_:canFocusItemAt:)添加到 UICollectionViewDelegate
pcm.!default {
type asym
capture.pcm "mic"
playback.pcm "speaker"
}
pcm.mic {
type plug
slave {
pcm "hw:1,0"
}
}
pcm.speaker {
type plug
slave {
pcm "hw:0,0"
rate 16000
}
}
我已经在此问题的代码中对其进行了测试,并将其添加到我的项目中,该项目终于可以使用!