iPhoneアプリでのタッチイベントに応答する複数のビューを必要とします
-
24-09-2019 - |
質問
セットアップ: 私は、私はタッチイベントに応答する必要があるという二つのビューを持っている、と彼らは互いの上に出て積層されています。 ビュー1ビュー2ビュー2の上にあるのUIWebViewです。ビュー1は、タッチイベントをキャプチャするsublclassedされます。
そしてtouchesEnded :)ファーストレスポンダであるビュー1、のイベントハンドラ内から、何も起こりません:。私の問題は、私はのUIWebViewのイベントハンドラ(touchesBeganを呼び出そうということです私はuserInteractionEnabledにビュー1を設定する場合は= NOの場合、タッチは、そのビューを経て、第二ビューで適切に処理されます。
私はタッチイベントに2つのビューの応答を持つことができる方法上の任意のアイデア?残念ながら、第二ビューでのUIWebViewで、私は実際になど、イベントハンドラではなく別のメソッドを呼び出す必要がありますので...
何かアドバイスを事前に感謝、 ジョエル
解決
ここに私の問題を解決します。それはUIViewのすべての種類に取り組んでいます!誰かのwhantは、
にこのコードを改善するための場合catchUIEventTypeMotion default: ...
私はこのコードをあなたのために参考になることを願っています。
PJ.
CustomWindow.h
#import <Foundation/Foundation.h>
@interface CustomWindow : UIWindow {
}
- (void) sendEvent:(UIEvent *)event;
@end
CustomWindow.m
#import "CustomWindow.h"
@implementation CustomWindow
- (void) sendEvent:(UIEvent *)event
{
switch ([event type])
{
case UIEventTypeMotion:
NSLog(@"UIEventTypeMotion");
[self catchUIEventTypeMotion: event];
break;
case UIEventTypeTouches:
NSLog(@"UIEventTypeTouches");
[self catchUIEventTypeTouches: event];
break;
default:
break;
}
/*IMPORTANT*/[super sendEvent:(UIEvent *)event];/*IMPORTANT*/
}
- (void) catchUIEventTypeTouches: (UIEvent *)event
{
for (UITouch *touch in [event allTouches])
{
switch ([touch phase])
{
case UITouchPhaseBegan:
NSLog(@"UITouchPhaseBegan");
break;
case UITouchPhaseMoved:
NSLog(@"UITouchPhaseMoved");
break;
case UITouchPhaseEnded:
NSLog(@"UITouchPhaseEnded");
break;
case UITouchPhaseStationary:
NSLog(@"UITouchPhaseStationary");
break;
case UITouchPhaseCancelled:
NSLog(@"UITouchPhaseCancelled");
break;
default:
NSLog(@"iPhone touched");
break;
}
}
}
- (void) catchUIEventTypeMotion: (UIEvent *)event
{
switch ([event subtype]) {
case UIEventSubtypeMotionShake:
NSLog(@"UIEventSubtypeMotionShake");
break;
default:
NSLog(@"iPhone in movement");
break;
}
}
@end
AppDelegate.h
#import <UIKit/UIKit.h>
#import "CustomWindow.h"
@interface AppDelegate : NSObject <UIApplicationDelegate>
{
CustomWindow *window;
}
@property (nonatomic, retain) IBOutlet CustomWindow *window;
@end
所属していません StackOverflow