У меня есть сегментированный элемент управления с 5 сегментами. Мне нужно, чтобы какое-то событие было запущено, когда на любом сегменте происходит касание, и я имею в виду нажатие и удержание, без поднятия пальца. И когда пользователь поднимает палец, он должен сброситьЕсть ли способ зарегистрировать прикосновение к UISegmentedControl
Я попытался с помощью touchesBegan и touchesEnded, но я не получить текущую SelectedIndex в touchesBegan, вот мой код
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
long oldValue = self.selectedSegmentIndex;
[super touchesBegan:touches withEvent:event];
if (oldValue == self.selectedSegmentIndex)
[self sendActionsForControlEvents:UIControlEventValueChanged];
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
NSLog(@"touchesEnded");
NSLog(@"selectedIndex%lu",self.selectedSegmentIndex);
[super touchesEnded:touches withEvent:event];
self.selectedSegmentIndex = -1;
}
Есть ли способ добиться эффекта «прикосновения» для сегментированного управления или любой другой альтернативы?
В touchsBegan сегмент еще не выбран, поэтому вы не можете его получить. – kientux
@kientux Есть ли способ получить выбранный индекс раньше? Я хочу, чтобы событие было запущено, когда его касание – vin
. Я думаю, что только с UISegmentedControl, ничего не может сделать с событием touch down, потому что сегмент выбирается только при касании. Если вы действительно хотите это сделать, вы можете поместить прозрачную кнопку на каждый сегмент, а когда кнопка была затронута, вызовите 'setSelectedSegmentIndex:'. Затем у вас есть как событие касания, так и выбранный индекс. – kientux