Если вы можете изменить целевую версию .Net на v4, то вы можете использовать новую функцию OpenBaseKey, например,
RegistryKey registryKey;
if (Environment.Is64BitOperatingSystem == true)
{
registryKey = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);
}
else
{
registryKey = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
}
Не используйте кнопку, используйте мультитач и NSTimer:
Создайте локальный объект NSTimer в своем интерфейсе, а затем используйте его для запуска / отмены таймера
-(void)movePlayer:(id)sender {
<Code to move player>
}
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
timer = [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(movePlayer:) userInfo:nil repeats:YES];
}
-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {
if (timer != nil)
[timer invalidate];
timer = nil;
}
-(void)touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event {
if (timer != nil) {
[timer invalidate];
timer = nil;
}
}
Таким образом, вы можете повторить событие с заранее определенным интервалом и не нужно полагаться на кнопку, и получить желаемое поведение повторения. Обратите внимание на триггер touchMoved - если они пошевелят пальцем, таймер отменяется, и игрок перестает двигаться.
Вы также можете сделать то же, что показано в предыдущем ответе, и по-прежнему использовать UIButton.
Просто запустите таймер на «Touch Down» и остановите таймер на «Touch Up Inside» или "Touch Up Outside".
Лично мне нравится использовать UIButtons, потому что они предлагают некоторые встроенные визуальные улучшения, которые вам не нужно кодировать самостоятельно.