Events door throwen discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Hey guys, Voor de makkelijkheid, omdat ik dacht dat het zo wel had gewerkt (was dus niet) had ik een Superklasse gemaakt die een extend ...
|
Registreer | FAQ | Ledenlijst | Kalender | Berichten van vandaag | Zoeken |
#1
|
|||
|
|||
Events door throwen
Hey guys,
Voor de makkelijkheid, omdat ik dacht dat het zo wel had gewerkt (was dus niet) had ik een Superklasse gemaakt die een extend deed van de UIViewController. Daar deed ik een aantal zaken in, maar nu had ik graag in mijn base class een aantal events opgevangen. Die lijken enkel aan te komen in mijn superclass ?? Dus stel u voor: Class A : UIViewController; Class B : A; Class A bezit bijvoorbeeld een UIScrollView en regelt de gehele view. Class B kan aan deze gegevens aan & een eventuele override doen van een aantl methodes. Door die override had ik Class B bijvoorbeeld de - (void) touchesBegan laten uitvoeren die door de UIScrollView in class A gebeurt bij aanraking van de view. >> Probleem! Die touchesBegan uit class B wordt nooit uitgevoerd, enkel die van class A. Iemand een idee hoe dit komt, en of dit mogelijk is ? Zijnde: events opvangen in de baseClass terwijl ze afkomstig zijn van elementen uit de superClass ? Thx! |
|
|
Gesponsorde links (verdwijnt na registratie)
|
#2
|
|||
|
|||
Even de terminologie: base class en super class zijn hetzelfde. In jouw geval is A dus de base class/super class van B.
Als je in B de touchesBegan functie overneemt, dan wordt deze aangeroepen in plaats van die van A. Dat is wat je wilt, toch? Er schieten me twee mogelijkheden te binnen waardoor dit niet zou werken: 1) Je hebt de functienaam verkeerd gespeld en daardoor helemaal niets overgeerft. 2) Je hebt een instance van A gemaakt en niet van B. |
#3
|
||||
|
||||
Zou je wat code fragmenten kunnen plaatsen. Nu is het een beetje gokken waarom het niet werkt.
|
#4
|
|||
|
|||
Inderdaad, de bedoeling is: B extends A. Dus: A is de superclass van B. (Sorry als het onduidelijk was)
Nu, een typfout zou me echt wel vreemd lijken hoor, moest het toch zo zijn: I'll kill myself Heb m'n mac nu niet bij de hand dus kan de code momenteel niet posten. Maar A definieerde dus een UIScrollView en plaatste daar een aantal elementen in (andere views per page). De touchesBegan method had ik gedefinieerd staan in B, maar werd dus niet opgeroepen. Laatst gewijzigd door linwe; 16-04-09 om 13:38. |
#5
|
|||
|
|||
Allereerst: sorry voor de late reply, maar hier dus een simpel voorbeeld in code:
CustomSwitch.h Code:
#import <Foundation/Foundation.h> @interface CustomSwitch : UISwitch { } @end Code:
#import "CustomSwitch.h" @implementation CustomSwitch - (void)setOn:(BOOL)on animated:(BOOL)animated { NSLog(@"Switched to %@", on); } - (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event { NSLog(@"test !"); } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"Touches began !"); } @end Noch de touchesBegan noch de setOn van deze UISwitch implemenatie wordt opgeroepen wanneer ik een "CustomSwitch" op een view plaats (uit de viewDidLoad -> switch wordt wel degelijk getoond bij een run). Code:
CustomSwitch *mySwitch = [[CustomSwitch alloc] initWithFrame: CGRectMake(10, 10, 200, 100)]; [self.view addSubview: mySwitch]; Wat ontbreekt er / doe ik fout ? *** Edit: straf, als ik een custom class maak based op een UIView en zet daar dan de touchesBegan method in, wordt die wel opgeroepen...? Laatst gewijzigd door linwe; 19-04-09 om 15:09. |
Labels |
catching events |
Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten) |
|
Soortgelijke discussies |
||||
Discussie | Auteur | Forum | Reacties | Laatste bericht |
Last.fm events (calendar) -> iPhone? | amkrisis | iPhone algemeen | 0 | 26-09-08 10:40 |
Nemussync: wel verjaardagen, maar geen andere events in google cal | Kimsalabim | Jailbreak apps en thema's | 1 | 04-09-08 18:11 |
Foto: events weergeven op iphone | Vark | Muziek, foto & video | 0 | 01-09-08 17:27 |
|
|