UIButton внутри UIScrollView задержка при нажатии
Я новичок в использовании Swift и у меня возникла проблема при его создании
Я использую Swift 2 XCode 7
У меня есть кнопка внизу скроллвью для отправки всего текстового поля, которое я поместил выше, но когда я нажимаю кнопку, мне нужно подержать несколько секунд, прежде чем нажать кнопку. У меня есть поиск решения в нескольких веб, и есть решение, которое говорит, что снял флажок Delays Content Touches
но мое представление прокрутки стало слишком сложным для прокрутки, поэтому я проверил, что другое решение говорит о создании собственного ScrollView, но после того, как я его создал, я не могу нажать кнопку.
Это несколько веб-сайтов, которые я нашел, но никто не работал
UIBTutton Touch задерживается, когда в UIScrollView
UIButton не показывает подсветку при нажатии в iOS7 - Swift
Подкласс UIScrollView в Swift для прикосновений
Пожалуйста, дайте мне несколько подсказок, как решить эту проблему
Любая помощь приветствуется
2 ответа
Если кнопка находится внизу таблицы, вы всегда можете добавить строку с ячейкой, которая действует как кнопка. Или добавьте кнопку в нижний колонтитул таблицы.
Лучший способ решить эту проблему - это выделить кнопку и прокрутить рамку просмотра. И ОС не будет проверять сенсорные события для кнопки или для просмотра прокрутки.
Обновить:
Мне интересно, ваша кнопка является подпредставлением просмотра прокрутки. Потому что я проверил эту иерархию представлений и не получил вашу проблему:
Обновление 2: Вы также можете сделать, как указано выше. В то же время вы должны перемещать эту кнопку всякий раз, когда прокручивается представление прокрутки. Это будет выглядеть так, будто они вместе.
Другим решением является изменение цепочки ответов. Вы можете получить хит события в - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
из UIView
, И если эта точка находится в рамке кнопки, вы должны нажать кнопку "Тест" и вернуть результат. Как это:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (!self.clipsToBounds && !self.hidden && self.alpha > 0.01) {
CGPoint point = [button convertPoint:point fromView:scrollView];
if (button frame contains point) {
UIView *result = [button hitTest:point withEvent:event];
if (result != nil) {
return result;
}
} else {
// hit the scroll view area outside button
}
}
return nil;
}