グローバル私は次のようにUIWindowをサブクラス化することになったすべてのタッチイベントをキャッチする:
// CustomUIWindow.h
#import <UIKit/UIKit.h>
#define kTouchPhaseBeganCustomNotification @"TouchPhaseBeganCustomNotification"
@interface CustomUIWindow : UIWindow
@property (nonatomic, assign) BOOL enableTouchNotifications;
@end
// CustomUIWindow.m
#import "CustomUIWindow.h"
@implementation CustomUIWindow
@synthesize enableTouchNotifications = enableTouchNotifications_;
- (void)sendEvent:(UIEvent *)event
{
[super sendEvent:event]; // Apple says you must always call this!
if (self.enableTouchNotification) {
[[NSNotificationCenter defaultCenter] postNotificationName:kTouchPhaseBeganCustomNotification object:event];
}
}@end
私は、すべてのタッチに待機を開始する必要がある時はいつでもその後、世界的に、私は次の操作を行います:私はオブザーバーとPROCを削除stopThumbnailWobbleで
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(stopThumbnailWobble:)
name:kTouchPhaseBeganCustomNotification
object:nil];
((CustomUIWindow *)self.window).enableTouchNotification = YES;
UITouchイベントでサムを削除するかどうかを決めることができます:
- (void)stopThumbnailWobble:(NSNotification *)event
{
[[NSNotificationCenter defaultCenter] removeObserver:self
name:kTouchPhaseBeganCustomNotification
object:nil];
((CustomUIWindow *)self.window).enableTouchNotification = NO;
UIEvent *touchEvent = event.object;
// process touchEvent and decide what to do
...
これは他人に役立つことを望みます。
このエラーメッセージを表示すると、私のアプリがクラッシュしています:[UIWindow setEnableTouchNotifications:]:認識できないセレクターがインスタンス –
に送られました。UIWindowをサブクラス化しましたか? –
いいえ私の問題は別の方法で解決されたので、私はそれを削除しません..とにかくおかげで..少なくとも、私はUIWindowがこのようにサブクラス化されていることを知りました。 –