Tudok (hogyan) hozzon létre saját UITouch eseményeket is kötődik a IBActions?

szavazat
0

Van egy új gesztus, (touch, húzza rá a többi, kiadás), amely azt szeretné, hogy ugyanúgy viselkednek, mint touchUpInside vagy touchdown vagy sem, hogy a listát, hogy bukkan fel, amikor döntetlen IBActions a felületépítő. (Azaz szeretném, ha a szokás is a listán, így tudok kötni őket IBActions)

Van egy módja annak, hogy ezt vagy azt kell csinálni, hogy programozottan kötni a dolgokat együtt?

Frissítés: A második legjobb dolog

Itt van egy nagyon lecsupaszított változata, amit tettem, hogy de-kapcsolt célom minden más adott osztályba, ha valaki más megpróbál elérni ezt:

@interface PopupButton : UIView {

}

//These are the replacement IBAction type connections.
@property (nonatomic) SEL tapAction;
@property (nonatomic, assign) id tapTarget;

@property (nonatomic) SEL dragAction;
@property (nonatomic, assign) id dragTarget;

@end

@implementation PopupButton

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    //Your custom code to detect the event
}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    //Your custom code to detect the event
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    //Here we'll say I detected the event I called drag.
    if (!(self.dragTarget && self.dragAction)) {
        NSLog(@No target for drag.);
        abort();
    } else {
        [self.dragTarget performSelector:self.dragAction];
    }

    //And here I detected the event tap.
    if (!(self.tapTarget && self.tapAction)) {
        NSLog(@No target for single tap.);
        abort();
    } else {
        [self.tapTarget performSelector:self.tapAction];
    }
}

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
    //Your custom code to detect the event
}

@end

Most, hogy ezt ki, a nézetvezérlőben akartam kötni ezeket az intézkedéseket tettem ezt helyette:

- (void)viewDidLoad
{
    [equalsPopupButton setTapTarget:self];
    [equalsPopupButton setTapAction:@selector(equalsPress)];
    [equalsPopupButton setDragTarget:self];
    [equalsPopupButton setDragAction:@selector(isNamingResult)];
}

Nem olyan elegáns, nyilvánvalóan opció + húzás, de ez lesz a munkát anélkül, hogy a kód minden merev és összekapcsolni. Remélem ez segít valaki.

A kérdést 12/06/2011 13:36
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Nem lehet kötni a funkciók ilyen módon. Akkor érdemes használni kisegítő szerepe kódot, és hívja meg a IBaction funkció és a gesztus felismerő funkció.

Válaszolt 12/06/2011 15:03
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more