菜鸟教程小白 发表于 2022-12-12 17:43:06

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 ( &gt; 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]
查看完整版本: ios - 获取所有当前的 UITouch,包括未更新的 UITouch