问题描述
我尝试了此处提到的GetMessageExtraInfo()
:
Detect if WM_MOUSEMOVE is caused by touch/pen
但它不起作用-GetMessageExtraInfo()
对于触摸板生成的所有鼠标事件返回0
。
在带有一体式触摸板的笔记本电脑上以及在连接了外部触摸板的台式电脑上进行了尝试。
我还尝试将WM_TOUCH事件与RegisterTouchWindow()
和WM_GESTURE
一起使用,但它们也不起作用-我在窗口上既没有收到WM_TOUCH
也没有收到WM_GESTURE
事件。
基本上,我需要检测手指何时打开和关闭触摸板。但是出于未知原因,似乎WM_TOUCH或WM_GESTURE仅适用于触摸屏,不适用于触摸板。
有什么建议吗?
解决方法
如果您需要能够区分输入源,请考虑使用extension AjoutAlimentController: UISearchBarDelegate {
func searchBar(_ searchBar: UISearchBar,textDidChange searchText: String) {
filteredData = []
for aliment in data {
if aliment.nomAliment.lowercased().contains(searchText.lowercased) {
filteredData.append(aliment)
}
}
self.tableView.reloadData()
}
}
消息而不是较旧的if aliment.nomAliment.lowercased().contains(searchText.lowercased) {
消息。请注意,这需要调用EnableMouseInPointer()
来接收有关系统认为是鼠标的设备的消息(对于许多基本的触摸板都是如此)。
与WM_POINTER*
消息不同,WM_MOUSE*
告诉您某些虚拟键的状态,WM_MOUSE*
消息包含足够的信息以能够跟踪输入源。更为复杂的是,指针消息根据所按下的按钮不提供单独的消息,但是该信息至少仍然可用。