Ta muốn phần đọc
thơ có thể chạm hoặc vuốt màn hình để ra bài mới, người dùng chọn bài nào chuyển
sang xong cứ chạm vào là đến bài tiếp theo.
Ví dụ người dùng
chọn bài 5, đọc xong vuốt sang bài 6, 7, 8 rồi lại quay về bài 1. Tức là không
cần thoát về màn hình trước, cứ vuốt ngang là ra hết các bài.
Ta sẽ dùng GestureRecognizer để làm.
Copy mảng qua2 là tên các bài
thơ sang class đọc và khai báo thêm 4 mảng mới.
var qua2=["Bài một","Bài hai","Bài
ba","Bài bốn","Bài
năm","Bài
sáu","Bài bảy","Bài
tám"]
var ten2 = [String](count: 8, repeatedValue: " ")
var tacgia2 = [String](count: 8, repeatedValue: " ")
var ar2 = [String](count: 8, repeatedValue: " ")
var noidung = [String](count: 8, repeatedValue: " ")
Khai báo thêm 2 biến số để dùng
var vi=0
var so2=0
Bây giờ ta sẽ đọc toàn bộ nội
dung của các bài thơ vào mảng noidung
ở trên, mỗi bài thơ thành một phần tử.
Copy vào trong viewDidLoad
for i in0..<ar.count {
let path2 = NSBundle.mainBundle().pathForResource(ar[i], ofType: "txt")!
var rea2 : String = ""
var t = ""
do {
try rea2 = NSString(contentsOfFile: path2, encoding: NSUTF8StringEncoding) asString
t=rea2
noidung[i]=t
}
catchlet error asNSError {
// print("ERROR :
reading from file \(fileName) : \(error.localizedDescription)")
}
}
Bây giờ có một vấn
đề là ta phải đảo mảng, cho vị trí bài thơ được chọn đọc lên đầu, các vị trí
sau cứ thế tiếp tục, đến hết bài thứ 8 lại quay về đầu tiên bài 1.
Mục đích để khi người dùng vuốt
hoặc chạm màn hình thì các bài cứ thế theo nhau hiện ra. Copy vào trên dòng set
chữ ra textView.
for i in0..<tacgia.count {
so2=so+i
if(so2>7){
so2=so2-8
}
ten2[i]=qua2[so2]
tacgia2[i]=tacgia[so2]
ar2[i]=noidung[so2]
}
Vị trí bài chọn sẽ lên đầu trong
các mảng có số 2, tiếp theo cứ thế nối đuôi vào.
Sửa dòng set chữ ra textView
thành.
gi.text = ar2[0]
Ta set bài chọn đọc ra textview,
chính là bài đầu tiên của mảng mới.
Tạo hàm để khi người dùng chạm
màn hình thì chuyển sang bài tiếp, copy ra ngoài viewDidLoad.
func tap2 (g:UIGestureRecognizer) {
vi=vi+1
if(vi>7){
vi=vi-8
}
gi.text = ar2[vi]
la.text = ten2[vi]
la2.text = tacgia2[vi]
}
Ta để biến đếm vi=0, khi có chạm
ta tăng biến đếm lên một đơn vị, lấy đó để set bài tiếp theo ra, cả tên bài,
tác giả cũng thế.
Copy vào trong viewDidLoad để
gán hàm cho hành vi chạm màn hình.
let t3 = UITapGestureRecognizer(target:self, action:#selector(fo.tap2(_:)))
t3.numberOfTapsRequired=2
view.addGestureRecognizer(t3)
Nếu để numberOfTapsRequired=1
thì một chạm sẽ
chuyển màn hình, 2 là kích đúp.
Nếu muốn để là vuốt thì do ta đã
dùng vuốt để quay về màn hình trước rồi, phải chọn cách khác để quay về màn
hình trước. Sau đó sửa hàm trong lệnh vuốt thành tap2 là được.
let t2 = UIPanGestureRecognizer(target:self, action:#selector(fo.tap2(_:)))
view.addGestureRecognizer(t2)
No comments:
Post a Comment