«статический» UIB кнопка поверх UIScrollview? - PullRequest
3 голосов
/ 31 марта 2011

Я хочу добиться довольно простого эффекта.ScrollView и статическая кнопка над ним.Пока что не проблема.К сожалению, проблема возникает, если я хочу прокрутить представление «через» кнопку.Поэтому начало перетаскивания внутри кнопки будет влиять на кнопку, а не на представление прокрутки.

Есть идеи о том, как этого добиться?

Большое спасибо!

Думаю, такой подходне будет работать, потому что touchesBegan устарела в UIScrollView… (правда ли эта информация?)

Не решение: -)

@implementation MySuperButton

+ (id)buttonWithFrame:(CGRect)frame {
    return [[[self alloc] initWithFrame:frame] autorelease];
}

- (id)initWithFrame:(CGRect)frame {
    if (self == [super initWithFrame:frame]) {
        NSLog(@"initWithFrame");
    }
    return self;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:touches withEvent:event];
    [self.nextResponder touchesBegan:touches withEvent:event];
    NSLog(@"[self nextResponder]: %@", [self nextResponder]);
}

@end

К сожалению, пока это не работает.Я думаю, что следующий респондент - это мой UIView, а не мой UIScrollView.Любые идеи?

Если мой viewcontroller, который является nextResponder, передает штрихи scrollView, ничего не происходит, а.

Ответы [ 5 ]

12 голосов
/ 04 апреля 2011

Добавьте кнопку не в представление прокрутки, а в его родительское представление, и все должно работать просто отлично.Прикосновения к кнопке непосредственно доставляются кнопке, а прикосновения к фону (представление прокрутки) доставляются в представление прокрутки.

Поскольку кнопка не является подпредставлением вида прокрутки, который она выиграла 'двигаться с фоном (что, я полагаю, вы имеете в виду под static ).

1 голос
/ 11 апреля 2011

Довольно сложно понять, чего вы пытаетесь достичь.Хотите прокрутить кнопку или нет?

Так что перетаскивание внутри кнопки повлияет на кнопку, а не на просмотр прокрутки.

Не ясно, если этоповедение, которое вы хотите, или поведение, которое вы пытаетесь изменить.

Если ответ прежнего Eiko верен, а если позже, вы должны добавить кнопку в качестве подпредставления представления прокрутки и обновлять его кадр всякий раз, когдаscrollViewDidScroll: называется.Я никогда не пробовал этого, но теоретически это работает.

1 голос
/ 04 апреля 2011

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

Попробуйте установить для кнопки exclusiveTouch значение NO. Не уверен, но, возможно, включите Multitouch для YES.

Если это не сработает, я бы попробовал создать подкласс UIButton, переопределить сенсорные события и передать их [self nextResponder] до / после [super touchEventX:]?

0 голосов
/ 11 апреля 2011

Если вы добавляете простую кнопку в представлении , то если вы нажмете кнопку. это вызовет Действие этого.

Sameway

Если вы добавляете простую кнопку в ScroolView , то если вы нажмете кнопку. это вызовет Действие этого.

И если вы коснетесь пустой области scroolview, то методы делегата будут вызваны из UIScrollView.

Если вы положите палец на кнопку и перетащите ее, это сразу же повлияет на вид прокрутки. скроллвид перетянет на 100%

0 голосов
/ 31 марта 2011

Переместите весь вид прокрутки вниз на высоту вашей кнопки и уменьшите ее высоту на ту же величину.Затем поместите кнопку над представлением прокрутки, чтобы она не была дочерней по отношению к представлению прокрутки.

...