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;
}
Другие вопросы по тегам