Ketuk dua kali Bilah navigasi UINavigationController?

Saya memiliki aplikasi dengan daftar data yang panjang di tableView, dan saya ingin mengetuk dua kali NavigationBar untuk menggulir UITableView di atas daftar (tempat pencarian berada).

Bagaimana saya bisa menerapkannya?

Terima kasih atas bantuan Anda.


person Bill    schedule 12.07.2010    source sumber
comment
Anda juga cukup mengetuk bilah status dan secara otomatis akan muncul di bagian atas tampilan tabel Anda. Tidak diperlukan kode.   -  person Souljacker    schedule 19.04.2012


Jawaban (2)


Gerakan standar untuk menggulir tableView ke atas adalah satu ketukan pada bilah status. Ini diaktifkan secara default, lihat Referensi UIScrollView

Jika Anda benar-benar menginginkan bilah navigasi dan menargetkan versi 3.2 dan lebih tinggi, saya akan merekomendasikan untuk melampirkan UITapGestureRecognizer ke bilah navigasi.

- (void)viewDidLoad {
    UITapGestureRecognizer* tapRecon = [[UITapGestureRecognizer alloc]
              initWithTarget:self action:@selector(navigationBarDoubleTap:)];
    tapRecon.numberOfTapsRequired = 2;
    [navController.navigationBar addGestureRecognizer:tapRecon];
    [tapRecon release];
}

- (void)navigationBarDoubleTap:(UIGestureRecognizer*)recognizer {
    [tableView setContentOffset:CGPointMake(0,0) animated:YES];
}

Jika Anda menargetkan 3.0 atau lebih rendah, ini bisa menjadi sedikit rumit dan tidak disarankan.

person tonklon    schedule 12.07.2010
comment
Perilaku standarnya adalah sekali ketukan. Bukan ketukan dua kali. - person Alan Rogers; 12.07.2010
comment
Saya mencoba menambahkan pengenal ketukan untuk satu ketukan. Pendekatan ini hanya dapat dilakukan jika Anda tidak memiliki tombol kembali, atau rightBarButtonItem. Peristiwa kliknya digantikan oleh pengenal isyarat. - person Drarok; 24.06.2011
comment
Saya tidak ingin bersikap kasar tetapi Drarok benar, dengan cara ini saya tidak dapat menggunakan tombol kembali lagi. Apakah ada cara agar ini berfungsi kembali? Tolonglah :) - person Octoshape; 14.10.2011
comment
Ya kamu benar. Itu tidak berfungsi dengan tombol di navBar. Maaf saya tidak melihat solusi untuk masalah ini. Mungkin orang lain? - person tonklon; 14.10.2011
comment
Hmm saya buat saja menjadi pertanyaan baru dan link ke pertanyaan ini, jangan dikira orang masih membaca yang ini di sini.. - person Octoshape; 14.10.2011
comment
Lihat solusi saya (untuk satu ketukan) yang berfungsi dengan tombol di navBar: stackoverflow.com/a/21288149/235297 - person Ortwin Gentz; 22.01.2014

Menindaklanjuti jawaban dari tonklon, Anda dapat membedakan masing-masing item dalam tampilan NavigationBar dengan mendapatkan subviewnya.

Subview dari NavigationBar adalah:

0 tombol kiri, 1 judul, 2 tombol kanan,

jadi alih-alih:

[navController.navigationBar addGestureRecognizer:tapRecon];

lakukan ini untuk judul bilah navigasi:

[[self.navigationController.navigationBar.subviews objectAtIndex:1] setUserInteractionEnabled:YES];
[[self.navigationController.navigationBar.subviews objectAtIndex:1] addGestureRecognizer:tapRecon];
person phmagic    schedule 08.05.2012
comment
Dua masalah: 1) titleView tingginya lebih kecil dari bilah navigasi. 2) indeks subview mungkin berubah jika ada beberapa tombol kiri (tidak diuji). Berikut solusi alternatifnya: stackoverflow.com/a/21288149/235297 - person Ortwin Gentz; 22.01.2014