Предотвратете UISegmentedControl от промяна на стойността с жестове с много докосване

Имам поредица от сегментирани контроли, които извикват методи, когато възникне събитие „Променена стойност“.

Проблемът ми е, че стойностите се променят, ако потребителят извърши жестове с много докосване, които започват от контролите: плъзгане с четири пръста нагоре (за превключване на приложения) или щипване с пет пръста (връщане към началния екран). Опитах се да променя методите, за да отговарят само на събитията „Touch Up Inside“, но сегментираните контроли все още променят стойностите с жестовете с много докосване независимо.

Има ли някакъв начин за подкласиране на UISegmentedControl, така че UIControlEventValueChanged да се появява само за контролите, ако има събитие „докосване вътре“ за отделен сегмент?

Много благодаря!


person SPM    schedule 07.09.2013    source източник


Отговори (1)


Проблемът е, че вашият UISegmentedControl отговаря на „UIControlEventValueChanged“. Ако искате вашият метод да бъде извикан само когато коригирате вътре, тогава вместо това накарайте UISegmentedControl да отговори на „UIControlEventTouchUpInside“. Не трябва да се налага да подкласирате или заменяте нещо.

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(yourMethod:)
 forControlEvents:UIControlEventTouchUpInside];

Наличните контролни събития се намират тук: https://developer.apple.com/library/ios/documentation/uikit/reference/UIControl_Class/Reference/Reference.html

person dev574    schedule 07.09.2013