2011-01-14 34 views
8

Tôi có một trang đang tải vào UIWebView (chiếm 100% màn hình) trên iPad.bàn phím trong hiển thị UIWebView và sau đó ẩn chính nó trên tiêu điểm nhập

Khi tôi chạm vào trường văn bản, trang đặt trường văn bản vào đúng vị trí và bàn phím bắt đầu xuất hiện, nhưng sau đó nó quay lại và quay trở lại và làm mờ được gọi trên trường nhập.

Khi tôi thử cùng một trang này trong Safari di động, bàn phím có thể triển khai thành công.

Tôi không thể tìm ra các quy tắc để bàn phím hiển thị thành công và ở lại = và lý do điều này khác với uiwebview so với safari.

Tất cả nghiên cứu của tôi về chủ đề này không mang lại câu trả lời nào.

+0

Bạn có đang xử lý chế độ xem thay đổi kích thước chính xác khi bàn phím xuất hiện không? Nếu không, điều này có thể là nguyên nhân của hành vi không mong muốn. – Paul

+0

Tôi làm cách nào để chỉnh kích thước chính xác? Tôi đã xử lý các sự kiện bàn phím rồi. Tôi chỉ không biết điều kiện nào mà bàn phím yêu cầu phải ở lại ... – Jake

+3

Có vẻ như bạn đang thay đổi/từ chối trình phát hiện linh hoạt trong một trong các phương thức ủy quyền webView của bạn. Bạn có thể vui lòng hiển thị mã cho những đại biểu đó không? –

Trả lời

1

Nếu không có bất kỳ mã đăng trong câu hỏi của bạn, tôi đang suy đoán rằng bàn phím sẽ trở lại xuống chỉ xảy ra khi các lĩnh vực văn bản HTML được chạm trước khi cuộc gọi cuối cùng để UIWebViewDelegate webViewDidFinishLoad:

Để kiểm tra điều này, đầu tiên thiết lập UIWebView.delegate của bạn đến số UIViewController sở hữu nó (hoặc bất kỳ đối tượng nào sở hữu số UIWebView). Sau đó, thực hiện các phương thức ủy nhiệm này.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSString *urlString = request.URL.absoluteString; 
    NSLog(@"%@ with URL = %@", NSStringFromSelector(_cmd), urlString); 

    return YES; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *urlString = webView.request.URL.absoluteString; 
    NSLog(@"%@ with URL = %@", NSStringFromSelector(_cmd), urlString); 
} 

Chạy ứng dụng của bạn và ghi chú số lần webViewDidFinishLoad: được gọi. (Nếu trang web của bạn chứa nhiều khung hoặc bao gồm những thứ như Google Analytics, nó sẽ được gọi nhiều lần.)

Hãy thử chạm vào trường văn bản HTML sau khi `webViewDidFinishLoad: 'được gọi cho lần cuối cùng. Bàn phím có ở lại không? (Tôi sẽ nghĩ như vậy).

Nếu điều đó hoạt động, tiếp theo hãy thử liên lạc trước cuộc gọi cuối cùng với `webViewDidFinishLoad: '. Bàn phím có hoạt động không nhưng sau đó quay lại?

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