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



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

About Author

Tuấn Anh

Là một người đam mê lập trình, hiện tập trung mảng phát triển ứng dụng web dựa trên nền tảng của WordPress. Đồng thời, nhằm đạt sự trọn vẹn trong công việc freelance, tôi đang học đồ hoạ, để có thể tự mình thiết kế layout, logo và những thứ khác liên quan đến đồ họa. Mục tiêu vài năm tới: Tôi sẽ là Full Web Developer = Graphics Design + Coding. Vietcoding Blog viết về WordPress, chia sẻ kinh nghiệm, mẹo vặt, viết plugin, làm theme và ôm ấp ý tưởng viết một Web Application Framework dựa trên WordPress. Đồ hoạ là chuyên mục đang được chuẩn bị trong tương lai.




Got Something To Say:

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

GENESIS FRAMEWORK