公式の実例 を見る限りだと、
プルフックはプルフックとして画面上部に入れ
その下にカルーセルを配置、で良いのではないでしょうか?
公式の実例を組み合わせただけですが、以下の内容でカルーセル、プルフック共に動きました。スワイプ操作が競合してしまう、というのも無さそうです。
HTML
1<ons-page>
2
3 <ons-pull-hook id="pull-hook">
4 Pull to refresh
5 </ons-pull-hook>
6
7 <ons-carousel swipeable overscrollable auto-scroll fullscreen var="carousel">
8 <ons-carousel-item style="background-color: gray;">
9 <div class="item-label" id="A">A</div>
10 </ons-carousel-item>
11 <ons-carousel-item style="background-color: #085078;">
12 <div class="item-label" id="B">B</div>
13 </ons-carousel-item>
14 <ons-carousel-cover>
15 <div class="cover-label">Swipe left or right</div>
16 </ons-carousel-cover>
17 </ons-carousel>
18
19</ons-page>
css
1ons-carousel-item {
2 display: table;
3 text-align: center;
4}
5
6.item-label {
7 display: table-cell;
8 vertical-align: middle;
9 color: white;
10 line-height: 1;
11 font-size: 48px;
12 font-weight: bold;
13}
14
15.cover-label {
16 text-align: center;
17 position: absolute;
18 left: 0px;
19 width: 100%;
20 bottom: 10px;
21 color: white;
22}
JS
1ons.ready(function() {
2 var pullHook = document.getElementById('pull-hook');
3
4 pullHook.addEventListener('changestate', function(event) {
5 var message = '';
6
7 switch (event.state) {
8 case 'initial':
9 message = 'Pull to refresh';
10 break;
11 case 'preaction':
12 message = 'Release';
13 break;
14 case 'action':
15 message = 'Loading...';
16 break;
17 }
18
19 pullHook.innerHTML = message;
20 });
21
22 pullHook.onAction = function(done) {
23 setTimeout(done, 1000);
24 };
25});