Say mam ten kod:Jak wykonać zdarzenia dotykowego przechwytywania przycisków w interfejsie superview?
#import <UIKit/UIKit.h>
@interface MyView : UIView
@end
@implementation MyView
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
// How can I get this to show up even when the button is touched?
NSLog(@"%@", [touches anyObject]);
}
@end
@interface TestViewAppDelegate : NSObject <UIApplicationDelegate>
{
UIWindow *window;
}
@end
@implementation TestViewAppDelegate
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
MyView *view = [[MyView alloc] initWithFrame:[window frame]];
[view setBackgroundColor:[UIColor whiteColor]];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"Hiya!" forState:UIControlStateNormal];
[button setFrame:CGRectMake(100.0, 100.0, 200.0, 200.0)];
[view addSubview:button];
[window addSubview:view];
[window makeKeyAndVisible];
}
- (void)dealloc
{
[window release];
[super dealloc];
}
@end
Czy istnieje jakiś sposób, aby przechwytywać zdarzenia dotykowe uzyskiwanie wysyłane do przycisku? Ostatecznie chciałbym zrobić podklasę UIView, która powie swojemu kontrolerowi widoku (lub deleguje, w zależności od tego), kiedy wykryje przesunięcie, aby mógł "wypchnąć" następny kontroler widoku na stos (podobny do ekranu głównego iPhone'a). Pomyślałem, że to pierwszy krok, ale jestem otwarty na sugestie, jeśli podejdę do tego niepoprawnie.
nie masz na myśli powrotu [superview hitTest: point withEvent: event]; –
'super' ma rację, ponieważ będziesz chciał wywołać metodę klasy nadrzędnej klasy,' superview' pominie to. – keegan3d