2010-04-24 3 views
1

Я работаю над веб-сайтом, на котором я хотел бы работать на iPhone, но я хочу, чтобы они могли нажать и удерживать кнопку, и продолжить ее, чтобы запустить событие onclick. Я получил его для работы в других браузерах, но iPhone - единственный, который должен будет удерживать кнопку. Есть ли способ повторить функцию, удерживая нажатой кнопку? Благодарю.JavaScript, iPhone: Повторить действие при нажатии кнопки

+0

Мне нравится ваша игра Space Invaders! – GlenCrawford

+0

На самом деле, это именно то, для чего это нужно, мне нужно снимать, просто удерживая кнопку на iPhone. – Doug

ответ

0

Запуск и остановка таймера на основе touchDown и touchUpInside сообщений, отправленных с кнопки. Предполагается, что кнопка настроена для привязки методов touchDown и touchUpInside к приведенным ниже. Вы также можете установить флаг «BOOL firing = TRUE;» при касании и снятии при касании. Ваш игровой цикл может посмотреть на этот флаг и принять решение.

@interface TouchTest : UIViewController { 
NSTimer *touchDownTimer; 
} 

@property (nonatomic,retain) NSTimer *touchDownTimer; 

- (IBAction) touchDown: (id) sender; 
- (IBAction) touchUp: (id) sender; 

@end 

@implementation TouchTest 
@synthesize touchDownTimer; 

- (void)viewDidLoad { 
[super viewDidLoad]; 

UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(100.00, 100.00, 105.0, 37.0); 
[button setTitle:@"Fire at Will" forState:UIControlStateNormal]; 
[button addTarget:(id)self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; 
[button addTarget:(id)self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; 

[self.view addSubview:button]; 
} 

- (IBAction) fireWeapon { 
    NSLog(@"WeaponFired"); 
} 

- (IBAction) touchDown :(id) sender{ 
    touchDownTimer = [NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval).3 target:self selector:@selector(fireWeapon) userInfo:nil repeats:TRUE]; 
} 

- (IBAction) touchUp :(id) sender { 
    [touchDownTimer invalidate]; 
} 
@end 
+1

Что делать, если touchDown находится внутри кнопки, но прикосновение наружу? – Olie