Events door throwen

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 ...



Ga terug   iPhone, iPod touch, iPad en Apple TV forum > Development > Ontwikkelen voor iOS
Wachtwoord vergeten? Registreren!
Registreer FAQ Ledenlijst Kalender Zoeken Berichten van vandaag Markeer forums als gelezen
  #1  
Oud 15 April 2009, 17:29
» iPhone US 8GB [FW: 2.2.1]  [Jailbreak: Nee]
» MacOS X
 
Geregistreerd: 16 January 2008
Berichten: 3
Standaard 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!
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 16 April 2009, 09:46
» iPhone 4 32GB (Zwart) [FW: 4.1]  [Jailbreak: Nee]
» Windows
 
Geregistreerd: 25 September 2008
Berichten: 153
Standaard

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  
Oud 16 April 2009, 10:56
ideveloper's schermafbeelding
» iPhone 4S 64GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» iPad 3 Wi-Fi +4G 64GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 2 April 2008
Locatie: Bodegraven
Berichten: 339
Send a message via twitter to ideveloper
Standaard

Zou je wat code fragmenten kunnen plaatsen. Nu is het een beetje gokken waarom het niet werkt.
  #4  
Oud 16 April 2009, 12:34
» iPhone US 8GB [FW: 2.2.1]  [Jailbreak: Nee]
» MacOS X
 
Geregistreerd: 16 January 2008
Berichten: 3
Standaard

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 April 2009 om 12:38.
  #5  
Oud 19 April 2009, 13:59
» iPhone US 8GB [FW: 2.2.1]  [Jailbreak: Nee]
» MacOS X
 
Geregistreerd: 16 January 2008
Berichten: 3
Standaard

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
CustomSwitch.m
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 April 2009 om 14:09.
Reageren

Labels
catching events


Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten)

 
Discussietools
Weergave

Soortgelijke discussies

Discussie Auteur Forum Reacties Laatste bericht
Last.fm events (calendar) -> iPhone? amkrisis iPhone algemeen 0 26 September 2008 09:40
Nemussync: wel verjaardagen, maar geen andere events in google cal Kimsalabim Jailbreak apps en thema's 1 4 September 2008 17:11
Foto: events weergeven op iphone Vark Muziek, foto & video 0 1 September 2008 16:27

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 21:48.