Nhận biết khi người dùng chạm ra ngoài ô nhập liệu để ẩn bàn phím

Published by Việt Coding on

Một vấn đề trong việc nhận dữ liệu nhập từ người thông qua các control (ví dụ như UITextField ) là phải nhận biết được người dùng chạm ra ngoài control để ẩn bàn phím

iPhone keyboard

iPhone keyboard

Tạo một project mẫu trên XCode, kéo 2 UITextField vào StroryBoard như hình:

Trong phần interface (.h) khai báo 2 hàm như sau:

[code language=”c”]
– (IBAction)onDimissKeyboard:(id)sender;

– (void)handleBackgroundTap: (UITapGestureRecognizer *)sender;
[/code]

Trong implement (.m)

Thêm đoạn code sau vào hàm VỉewDidLoad
[code language=”c”]
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleBackgroundTap:)];

tapRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapRecognizer];
[/code]

Tiếp đó, trong hàm onDimissKeyboard, thêm vào:

[cpp]
[sender resignFirstResponder];
[/cpp]

và hàm handleBackgroundTap thêm:

[cpp]
[keywordTextField resignFirstResponder];
[textField resignFirstResponder];
[/cpp]

với keywordTextField và textField là 2 UITextField control bạn cần tạo reference từ 2 control trên Storyboard.

Chạy thử project và tap vào UITextField control, keyboard sẽ hiện lên. Khi tap ra ngoài thì keyboard sẽ ẩn đi.

Đây không phải là một bài viết hướng dẫn đầy đủ. Chỉ là những điểm quan trọng mà Việt Coding note lại để tham khảo khi cần thiết

Quảng cáo tài trợ


Việt Coding

Là một người đam mê lập trình, tôi vọc vạch đủ thứ liên quan đến lập trình cho thoả chí tò mò. Hiện làm chủ yếu ở mảng phát triển ứng dụng di động cho iOS và Android với React Native. Thỉnh thoảng vọc vạch mấy thứ liên quan đến Internet of Things như Smart Home. Đang nghịch mấy con Raspberry Pi và thấy nó cũng thú vị :)

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax