2012-01-17 26 views
10

MobileSafari dưới dạng quy tắc có hành vi nút HTML không đúng (ý nghĩa không chính xác: "không giống như nút gốc iOS"). hành vi nút đúng là như sau:Hành vi nút chạm phù hợp cho MobileSafari

  • tài chạm nút: Nút nổi bật
  • tài kéo ngón tay ra khỏi nút: Nút mờ
  • tài kéo ngón tay trở lại vào nút: Nút nổi bật
  • tài kéo ngón tay ra của nút và bản phát hành: Nút không nhấp vào

Nút MobileSafari tô sáng khi bạn chạm vào chúng, vẫn được tô sáng bất kể vấn đề gì bạn di chuyển và nhấp vào bất kể bạn giải phóng chúng ở đâu (trừ khi chế độ xem cuộn, trong trường hợp đó chạm luôn bị hủy, ngay cả khi bạn nhập lại nút).

Sự cố này áp dụng cho tất cả những thứ có thể nhấp như liên kết (khi -webkit-touch-callout được đặt thành none). Tôi chỉ tìm thấy một ứng dụng web cho đến nay có hành vi nút chính xác: Facebook. Nhìn vào mã của họ cho nó, có vẻ như họ đã thực hiện khá nhiều nhảy qua hoops để làm cho nó hoạt động chính xác (theo dõi tất cả các sự kiện chuột bằng tay và không sử dụng các nút ở tất cả). Mã này dày đặc, sử dụng Javelin, và tôi chưa rõ ràng trên tất cả các phần cần thiết để làm cho nó hoạt động.

Tôi biết tôi đang đùa một mình (vì nếu nó dễ, mọi người sẽ làm điều đó), nhưng tôi sẽ hỏi dù sao đi nữa. Có bất kỳ đoạn mã phổ biến nào có thể xử lý tính năng này không? Có một giải pháp đơn giản hơn so với kỹ thuật đảo ngược Javelin, ngay cả khi nó chỉ áp dụng cho WebKit? Mục tiêu cuối cùng của tôi là hành vi nút chính xác cho một ứng dụng gốc được nhúng trong ứng dụng gốc, vì vậy các giải pháp JavaScript/ObjC lai cũng có thể chấp nhận được (mặc dù không có phương pháp kết hợp nào) .

Trả lời

1

Về cơ bản những gì bạn muốn làm là xây dựng một số chức năng di chuột lai cho thiết bị cảm ứng, phát hiện khi ngón tay của bạn di chuyển vào/ra khỏi nút được đề cập.

Tôi đã xây dựng một JSFiddle cơ bản, thực hiện một số chức năng của barebones. Nếu bạn biết bất kỳ javascript, tôi nghĩ bạn sẽ có được ý tưởng.

Live JSFiddle DEMO

Hãy thử nó trên thiết bị iOS của bạn (và có thể thiết bị Android của bạn ??).

- brian

+1

Tôi đã rất cố gắng để tránh thêm (và học tập: D) JQuery cho chút web Tôi đang sử dụng trong ứng dụng đặc biệt này, nhưng bản demo của bạn thực sự là khá tuyệt vời. Cảm ơn. Tôi cần phải chơi với nó một số chi tiết, kể từ khi tôi tìm thấy nó hoạt động một chút fiddly trong MobileSafari (đôi khi nó cháy khi bạn sẽ không nghĩ rằng nó sẽ, và đôi khi nó không đặt lại khá đúng). Nhưng những điều cơ bản là rất thú vị. Tôi sẽ phải suy nghĩ lại về việc tránh JQuery của mình vì tôi đã làm khá nhiều tranh cãi về JavaScript viết tay trong thời gian gần đây. –

+0

Yea, hơi rung khi bạn di chuyển lên/xuống. Và nó chắc chắn không bao gồm tất cả các trường hợp cạnh, nhưng di chuyển vào/ra khỏi nút theo chiều ngang hoạt động khá tốt. Cách tốt nhất để tìm hiểu jQuery là thực sự chỉ để mở một JSFiddle và bắt đầu chơi xung quanh với các phần tử HTML. – briangonzalez

Các vấn đề liên quan