我希望我的导航栏在中间显示两个东西.其中一个是List名称,另一个是用户名.用户名将放在列表名称下.我做了什么至今,我创建了两个标签,一个上海华编程和设置titleView的navigationItem.
override func viewDidLoad() {
super.viewDidLoad()
var rectForView = CGRect(x: 0, y: 0, width: 190, height: 176)
var viewForTitle = UIView(frame: rectForView)
var rectForNameLabel = CGRect(x: 0, y: 63, width: 190, height: 30)
var listNameLabel = UILabel(frame: rectForNameLabel)
listNameLabel.text = "Name of the List...."
listNameLabel.textAlignment = NSTextAlignment.Center
listNameLabel.font = UIFont(name: "HelveticaNeue-Bold", size: 15)
var rectForListLabel = CGRect(x: 0, y: 93, width: 190, height: 20)
var usersOfListLabel = UILabel(frame: rectForListLabel)
usersOfListLabel.text = "some Users...."
usersOfListLabel.textAlignment = NSTextAlignment.Center …Run Code Online (Sandbox Code Playgroud) 我正在尝试做的是处理触摸事件,以便当我触摸屏幕时,我想采取一些行动.例如改变背景颜色我试过的事情://我是子视图表视图控制器
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
tableView.backgroundColor = UIColor.orangeColor()
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,我怀疑tvc可能不是第一响应者,因此表视图处理触摸事件.所以我试过:
override func viewDidLoad() {
super.viewDidLoad()
tableView.resignFirstResponder()
}
Run Code Online (Sandbox Code Playgroud)
还尝试过:
override func becomeFirstResponder() -> Bool {
return true
}
override func canBecomeFirstResponder() -> Bool {
return true
}
Run Code Online (Sandbox Code Playgroud)
他们都没有工作.我该如何处理事件?我错过了什么?
编辑
根据本机swift代码选择的答案:
override func viewDidLoad() {
super.viewDidLoad()
var tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "tap:")
tapGestureRecognizer.cancelsTouchesInView = true
self.tableView.addGestureRecognizer(tapGestureRecognizer)
}
func tap(recognizer: UITapGestureRecognizer) {
if recognizer.state == UIGestureRecognizerState.Ended {
var tapLocation = recognizer.locationInView(self.tableView)
var tapIndexPath : NSIndexPath? = self.tableView.indexPathForRowAtPoint(tapLocation)
if …Run Code Online (Sandbox Code Playgroud)