我在默认的KeyboardViewController.swift中以编程方式为自定义键盘扩展创建了一个UITableView,但由于某种原因,didSelectRowAtIndexPath根本没有响应。我确保将单元格的userInteractionEnabled设置为true,并确保将allowsSelectionDuringEditing设置为true。 tableView肯定正在填充,当我触摸它们时单元格会突出显示但是日志根本没有出现(当断点上的方法时,方法也不会破坏)。
任何人都有任何关于我可能搞砸了什么的想法?
class KeyboardViewController: UIInputViewController, UITableViewDelegate, UITableViewData Source {
var tableView: UITableView = UITableView()
//other setup
override func viewDidLoad() {
super.viewdidLoad
// other setup here
tableView.frame = CGRectMake(0, 0, 320, 160)
tableView.delegate = self
tableView.dataSource = self
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
tableView.allowsSelection = true
tableView.allowsSelectionDuringEditing = true
tableView.userInteractionEnabled = true
self.view.addSubview(tableView)
}
//delegate&datasource methods
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
let sectionTitle = artistSectionTitles[section]
let sectionArtist = artists[sectionTitle]
return sectionArtist!.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
cell.userInteractionEnabled = true
let sectionTitle = artistSectionTitles[indexPath.section]
let sectionArtists = artists[sectionTitle]
let artist = sectionArtists?[indexPath.row] as NSString
cell.textLabel?.text = artist
return cell
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 22
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: false)
println("You selected cell #\(indexPath.row)!")
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return artistSectionTitles[section]
}
func sectionIndexTitlesForTableView(tableView: UITableView) -> [AnyObject]! {
return artistSectionTitles
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return artistSectionTitles.count
}
答案 0 :(得分:0)
您如何跟踪选择确实不起作用?因为如果行亮起 - 它应该可以工作。
也许你正在改变某个地方的tableView委托?
还尝试更改单元格selectionStyle属性。
答案 1 :(得分:0)
显然,使用新的iOS App扩展类型进行调试可能非常粗略。要在didSelectRowAtIndexPath中点击调试断点,我跟随Alex Guerrero的回答来自这个stackoverflow帖子。希望它能帮助其他人使用新的应用扩展程序!
https://stackoverflow.com/a/27352955/3282316
复制并粘贴到下方以防邮件被删除
Apple已将此问题报告为Xcode 6.1发行说明中的已知问题:
iOS 8.1模拟器中的Safari,地图和开发人员应用无法正确识别本地化和键盘设置(包括第三方键盘)。 [NSLocale currentLocale]返回en_US,只有英语和表情符号键盘可用。 (18418630,18512161) 我正在使用Xcode 6.1.1,似乎它还没有解决,但我发现了一个解决方法。您应该按照以下步骤操作:
打开Xcode并在其菜单栏中点击进入Xcode>打开开发人员工具> iOS模拟器
现在进入iOS模拟器菜单栏转到硬件>键盘并检查是否启用了“连接硬件键盘”。如果是,请单击它以禁用并退出iOS模拟器
然后返回Xcode并确保键盘被选为方案
点击进入运行按钮或按产品>运行以构建并运行您的应用程序,然后在“选择要运行的应用程序”菜单中选择“今天”
当iOS模拟器启动时,请转到设置>一般>键盘>键盘>添加新键盘并选择您自己的键盘,然后按键盘命令+ shift + H返回主屏幕
从这里我回到我的应用程序并单击一个单元格并且didSelectRowAtIndexPath响应!
如果键盘仍然没有出现: 从〜/ Libray / Preferences /中删除文件com.apple.iphonesimulator.plist 在iOS模拟器菜单栏中单击进入iOS模拟器>重置内容和设置...
答案 2 :(得分:0)
你可能已经给出了#34;没有选择"到TableView的选择属性。请改变它并尝试。