Извлеките и измените точку, в которой touchUpInside меняет touchUpOutside

Я сделал работу UISlider же, как слайдер «slide to unlock». То, что мне нужно сделать, – это определить момент, при котором снятие пальца классифицируется как touchUpOUTSIDE а не touchUpINSIDE . Это та точка, в которой вы скользите пальцем мимо конца слайдера слишком далеко. Я думаю, это то же самое, что и с UIButton , вы можете нажать кнопку, а затем отпустить палец от кнопки и в зависимости от того, как далеко вы продвигаетесь, его все равно можно классифицировать как touchUpInside . Если возможно, я хочу отметить целевую область кружком.

Как только мне удалось найти, где находится этот пункт, можно ли его изменить? Значит, у меня может быть большая целевая область?

Я действительно не знаю, с чего начать. благодаря

2 Solutions collect form web for “Извлеките и измените точку, в которой touchUpInside меняет touchUpOutside”

Согласно документам, событие UIControlEventTouchUpOutside запускается, когда палец выходит за границы элемента управления. Если вы пытаетесь изменить эту область, слайдер будет масштабироваться. Почему бы не просто связать действие для UIControlEventTouchUpOutside же, как UIControlEventTouchUpInside ?

Мне потребовалось несколько часов, но мне удалось разобраться в этом. Я провел много тестов, переопределяя touchMoved, touchesEnded и sendAction: action: target: event, и кажется, что любое касание в пределах 70 пикселей классов фреймов как касание INSIDE. Таким образом, для UISlider 292×52 любое касание от x: -70 до x: 362 или y: от -70 до 122 будет считаться внутренним касанием, даже если оно находится вне рамки.

Я придумал этот код, который переопределит пользовательский класс, чтобы позволить более крупной области 100 пикселей вокруг кадра считаться внутренним касанием:

 #import "UICustomSlider.h" @implementation UICustomSlider { BOOL callTouchInside; } -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { callTouchInside = NO; [super touchesMoved:touches withEvent:event]; } -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { CGPoint touchLocation = [[touches anyObject] locationInView:self]; if (touchLocation.x > -100 && touchLocation.x < self.bounds.size.width +100 && touchLocation.y > -100 && touchLocation.y < self.bounds.size.height +100) callTouchInside = YES; [super touchesEnded:touches withEvent:event]; } -(void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event { if (action == @selector(sliderTouchOutside)) { // This is the selector used for UIControlEventTouchUpOutside if (callTouchInside == YES) { NSLog(@"Overriding an outside touch to be an inside touch"); [self sendAction:@selector(UnLockIt) to:target forEvent:event]; // This is the selector used for UIControlEventTouchUpInside } else { [super sendAction:action to:target forEvent:event]; } } else { [super sendAction:action to:target forEvent:event]; } } 

С немного более тщательной настройкой я должен был бы использовать его и для противоположного. (Использование более близкого касания как внешнего касания).

  • UISlider минимальный и максимальный оттенок четкости цвета iOS 7.1 ошибка
  • Непрерывно изменяйте значение UILabel на изображении большого пальца UISlider
  • Проблемы с предварительной загрузкой UISlider и закругленными краями
  • UIPageViewController с внутренним контроллером UISlider - увеличивает область попадания слайдера
  • Как обновить UISlider из другого одноэлементного класса?
  • Кнопка маршрута ios mpvolumeview, не вертикально центрированная по обновлению ios 7.1
  • Как использовать не растягиваемое, но повторяющееся фоновое изображение для трека UISlider?
  • Установка ползунка в максимальное значение
  • Изменить изображение iPhone UISlider iPhone
  • Круглый пользовательский интерфейс с изображением и цветом
  • Изображение дорожки UISlider исчезает при возврате с определенного вида
  • Interesting Posts

    UISearchController – плохо работает с контроллерами дочерних представлений

    Анимация в viewDidLoad

    Проблема с layer.shadowColor и UIColors

    UIInterpolatingMotionEffect работает случайным образом

    Назначьте новое изображение UIImageView с помощью Swift

    Обнаружить, если свет под UIVisualEffectView светится

    Согласование вертикальных позиций MPVolumeView и UISlider в UIToolBar

    Ошибка CoreFoundation Trap "Thread1: EXC_BREAKPOINT (код = EXC_ARM_BREAKPOINT, subcode = 0xdefe)"

    iOS не распознает события кликов

    Как преобразовать инструкцию SQL "удалить из таблицы, где someID не в (выберите someID из группы Table по свойству property1, property2)

    iOS – получить NSDictionary из NSUserDefaults: попытался разыменовать недопустимый объект ObjC или отправить ему непризнанный селектор

    Код кода C ++ Delphi XE6 в iOS

    Загрузить изображение на сервер с iOS не работает

    Проблемы с импортом изображения iCarousel

    viewWithTag возвращает nil при инициализации UICollectionViewCell

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.