0
Thumbsup

いい質問だ

0

Thumbsdown

うーん

ScrollableViewで最上部に到達したかどうかの判断について

Curry
Curry 10

投稿日:2015-06-23 14:53:23

お世話になります。

初歩的な質問で申し訳ありません。

下記を参考にandroidのpullを実装しようとしています。
http://qiita.com/ganezasan/items/70219afe26f99405e16a

Alloy
    View#main
        View#pullView
            ActivityIndicator#activityIndicator
        ScrollableView#pull
            TableView#messagelistTable
#スクロールした分scrollableViewの位置をずらす
$.pull.addEventListener 'touchmove', (e) ->
  #yが0以外の場合は2回目以降のtouchmoveイベント
  #scrollableViewのデフォルトの高さよりも下に触った位置が下か
  #前回触った位置よりも下なのかをチェック
  if y != 0 and Number(e.y) > pull_top and Number(y) <= Number(e.y)
    top = 0
    top = (Number(e.y) - Number(y)) * 0.1 + pull_top
    Ti.API.info 'top:' + String(top)
    $.pull.setTop top
  #開始点を記録
  else if Number(e.y) > pull_top and Number(e.y) < 300 + pull_top
    y = e.y
  return

こんな感じで実装しているのですが、
これだと上にスクロールした時に
常にローディングしてしまうので
ScrollableViewが一番上に来ている時、
または中のTableViewが一番上にに来ている時、
に動作するようにしたいのですが、
ScrollableViewまたはTableViewが一番上に来ているかどうかを
判断する方法はありますでしょうか?

よろしくお願いします。



回答

Curry
Curry
10

Thumbsup

いい回答

1

Thumbsdown

うーん



$.pull.addEventListener 'touchmove', (e) ->

の$.pullをtableViewにし、
取得したインデックスで判断することで
対応できました。


k0sukey
k0sukey
360
Tcad_icon Tcmd_icon

Thumbsup

いい回答

0

Thumbsdown

うーん

AndroidでPull to Refreshするならモジュール使っちゃった方が手っ取り早いですよ。
https://github.com/iskugor/Ti.SwipeRefreshLayout


回答ありがとうございます。 いくつかモジュールも見たのですが、やり方が悪かったのかなかなか動かなかったので、質問した方法で実装してみました。 上記のモジュールは、サンプルコードはlistviewになっていますが、見た感じだと中に入れるのは何でも良さそうでしょうか? --- Curry

ListView/TableViewならOKでした。ScrollViewはダメみたいですね。 ScrollableViewにTableViewが乗っかっている状態なので、TableViewを<SwipeRefresh module="com.rkam.swiperefreshlayout"></SwipeRefresh>で括ってあげればOKじゃないですかね。 --- k0sukey

k0sukey
k0sukey
360
Tcad_icon Tcmd_icon

Thumbsup

いい回答

0

Thumbsdown

うーん

こちらの方がコードが見やすいですね。こんな感じになるのかな?

<Alloy>
  <ScrollableView platform="android">
    <SwipeRefresh module="com.rkam.swiperefreshlayout">
      <TableView/>
    </SwipeRefresh>
    <SwipeRefresh module="com.rkam.swiperefreshlayout">
      <TableView/>
    </SwipeRefresh>
    <SwipeRefresh module="com.rkam.swiperefreshlayout">
      <TableView/>
    </SwipeRefresh>
  </ScrollableView>
  <ScrollableView platform="ios">
    <TableView>
      <RefreshControl/>
    </TableView>
    <TableView>
      <RefreshControl/>
    </TableView>
    <TableView>
      <RefreshControl/>
    </TableView>
  </ScrollableView>
</Alloy>

ありがとうございます。 --- Curry

ログインすると回答することができます。