我无法找到有关如何捕获触摸事件的信息。 Event.type和event.description对我没有帮助,据我所知,文档中没有示例。
我正在几个按钮上创建一个IBAction,并希望(共享)动作处理命名按钮(sender.currentTitle)和(事件。??),以添加按钮被点击或长按的代码。 / p>
@IBAction func ChangeSort(sender: UIButton, forEvent event: UIEvent!) {
// Trying to capture the button action? Type?? Description?
switch event.type {
case "Touch Up Inside":
// Switching on currenttitle works fine.
switch sender.currentTitle! {
case "Amount":
MyQueries.QppQueryOrderBy = "Order by Amount"
// Mylabel.text = "sss"
default: ...
}
case "Touch Down Repeat":
print("In long press")
switch sender.currentTitle! {
case "Amount":
MyQueries.QppQueryOrderBy = "Order by Amount desc"
default: ...
}
default:
print("in def")
switch sender.currentTitle! {
case "Amount":...
MyQueries.QppQueryOrderBy = "Order by LastActivityDate desc"
default:
MyQueries.QppQueryOrderBy = "Order by Amount desc"
}
}
self.theTableView.reloadData()
}
答案 0 :(得分:1)
你回来的UIEvent
不会告诉你你想要什么。 UIEvent只会告诉您触摸,动作或遥控器。您正在寻找UIControlEvent
,这很难从iBAction中获取。解决此问题的更标准方法是制作多个@IBAction func
并将不同类型的控制事件分配给不同类型。
因此,对于所有命名按钮,您可以将内部事件中的修饰分配给相同的sortByTitle
函数。
@IBAction func sortByTitle(sender: UIButton) {
// This is associated with TouchUpInside in IB
switch sender.currentTitle! {
case "Amount":
MyQueries.QppQueryOrderBy = "Order by Amount"
// Mylabel.text = "sss"
default: ...
}
self.theTableView.reloadData()
}
@IBAction func sortByTitleDescending(sender: UIButton) {
//This is associated with Touch Down Repeat
print("In long press")
switch sender.currentTitle! {
case "Amount":
MyQueries.QppQueryOrderBy = "Order by Amount desc"
default: ...
}
self.theTableView.reloadData()
}
基本上,如果您要在代码中创建按钮,则在初始化时,您可以使用UIControl / UIButton上的addTarget
方法为要监视的每个控件事件添加一个func。在addTarget
中,为每个func指定不同的func。在IB中,您只是以图形形式执行此操作。