对于我的应用程序,我想使用所有内置的操作可能性,例如缩放。但是如果用户在屏幕上按3个手指,我想显示一个特定的UI元素。那么,检查用户是否同时按下屏幕上的3个手指,并且彼此相邻,最好的方法是什么?(不禁用内置操作可能性)。
我的第一个方法是在布局的顶部网格元素上注册触地事件。在事件处理程序中,我得到了联系人。但是在那里怎么办?
只需检查联系人是否是指纹,将其存储在列表中,然后检查列表是否已经包含两个类似的图标?
还是有更性感的解决方案?
谢谢!
编辑:
根据答案,我写了两个方法:
private void OnContactDown(object sender, ContactEventArgs e)
{
if (this.ContactsOver.Count == 3)
{
Console.WriteLine("3 contacts down. Check proximity");
if (areNear(this.ContactsOver))
{
Console.WriteLine("3 fingers down!");
}
}
}
private Boolean areNear(ReadOnlyContactCollection contacts)
{
if ( Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).X - contacts.ElementAt(1).GetCenterPosition(this).X) < 100 &&
Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).Y - contacts.ElementAt(1).GetCenterPosition(this).Y) < 100 &&
Math.Abs(contacts.ElementAt(1).GetCenterPosition(this).X - contacts.ElementAt(2).GetCenterPosition(this).X) < 100 &&
Math.Abs(contacts.ElementAt(1).GetCenterPosition(this).Y - contacts.ElementAt(2).GetCenterPosition(this).Y) < 100 &&
Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).X - contacts.ElementAt(2).GetCenterPosition(this).X) < 100 &&
Math.Abs(contacts.ElementAt(0).GetCenterPosition(this).Y - contacts.ElementAt(2).GetCenterPosition(this).Y) < 100)
{
return true;
}
else
{
return false;
}
}
他们必须重写,但它是有效的。并且必须调整阈值(atm 100)。