ios - 获取所有当前的 UITouch,包括未更新的 UITouch
<p><p>所以我正在做自定义手势识别,我遇到了麻烦。我需要监控所有当前的触摸,但 <code>touchesBegan</code>、<code>touchesEnded</code>、<code>touchesMoved</code> 和 <code>touchesCancelled</code> 都只给我触摸他们正在监控。我需要对所有的触摸进行计算,不管它们是否被监控。我已经进行了一些研究,并看到了自己监控触摸的建议,但对我来说并不顺利。这是我的代码:</p>
<pre><code>-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
/* Called when a touch begins */
;
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSArray *objects = ;
for (UITouch *touch in touches) {
for (UITouch *touch2 in objects) {
if (CGPointEqualToPoint(, )) {
;
;
}
}
}
}
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
;
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
;
NSArray *objects = ;
for (UITouch *touch in touches) {
for (UITouch *touch2 in objects) {
if (CGPointEqualToPoint(, )) {
;
}
}
}
}
</code></pre>
<p>我想要的:<code>myTouches</code> 应该是屏幕上所有触摸的准确表示。
我得到的是:<code>myTouches</code> 不断增长,尽管有时来自事件的触摸被正确注册为与 <code>myTouches</code> 中的触摸相同。我还做了一个测试,其中我有一个整数计算在 <code>touchesBegan</code> 中注册的触摸次数,并减去在 <code>touchesEnded</code> 中注册的触摸次数,结果总是为正数,这意味着更多的触摸被注册而不是结束。请帮忙!</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>尝试 UIApplication 的子类来监控应用程序中的所有触摸。</p>
<pre><code> @interface MyUIApplication : UIApplication
</code></pre>
<p>然后在<code>MyUIApplication</code></p>中使用事件<code>sendEvent</code>
<pre><code> - (void)sendEvent:(UIEvent *)event {
;
NSSet *allTouches = ;
if ( > 0) {
//To get phase of a touch
UITouchPhase phase = ((UITouch *)).phase;
if (phase == UITouchPhaseBegan){
//Do the stuff
}
//also you can use UITouchPhaseMoved, UITouchPhaseEnded,
// UITouchPhaseCancelled and UITouchPhaseStationary
}
}
</code></pre>
<p>别忘了在 main 中添加类</p>
<pre><code> int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, NSStringFromClass(), NSStringFromClass());
}
}
</code></pre></p>
<p style="font-size: 20px;">关于ios - 获取所有当前的 UITouch,包括未更新的 UITouch,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/20855294/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/20855294/
</a>
</p>
页:
[1]