[英]Issues with dismiss keyboard using Tap Gesture when UITextField is inside UIScrollView.
我設計的應用程序具有以下層次結構:
UIViewController
UIView
UIScrollView
UITextField
在ViewDidLoad上,我做了:
...
tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
tapGesture.cancelsTouchesInView = NO;
[self.scrollView addGestureRecognizer:tapGesture];
...
在hideKeyboard上,我執行了以下操作:
- (void) hideKeyboard {
//Hide keyBoard
[self.view endEditing:YES];
}
乍一看,它可以完美運行,但不幸的是存在問題。 當應用程序運行時,我們可以單擊UITextField,按預期顯示鍵盤。 如果我們在UITextField旁邊單擊, hideKeyboard
調用hideKeyboard
方法的方法, hideKeyboard
預期方式關閉鍵盤,但是如果嘗試再次單擊UITextField,則不會再次顯示鍵盤。
我做錯了什么? 有人知道嗎
它是每次需要用戶反饋時都要處理的非常普遍的問題。 如果Apple在即將到來的框架版本中包含此類日常功能,將非常有幫助。
對於如何在編輯過程中將UITextField和UITextView移出鍵盤的方式,有一百一十種建議的解決方案-通常歸結為觀察
但是我發現的所有建議的解決方案往往都是完全DIY的,必須為每個需要它的視圖控制器實現。
解決方案由Michael Tyson提供... 用於將文本字段移出鍵盤的嵌入式通用解決方案您可以在GitHub項目頁面上獲取源文件,其中包括一個示例項目。
嘗試這個..
- (void) hideKeyboard
{
//Hide keyBoard
[self.view endEditing:YES];
[self.scrollView bringSubViewToFront:YourTextField];
}
我曾經想檢測滾動視圖上的觸摸,類似於UIView上的觸摸。
為了訪問滾動視圖上的觸摸,如觸摸開始和觸摸結束,以及其他此類方法,我將UIScrollView子類化,並且能夠訪問scrollview上的所有觸摸事件。
如果要訪問UIView和UIScrollView上的觸摸事件,請嘗試執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.