我有一個UIScrollView
作爲UIView
子視圖添加的應用程序。我添加了UITextField
,UITextview
作爲UIScrollView
的子視圖。我想在點擊滾動視圖時關閉鍵盤。我怎樣才能做到這一點?作爲UIScrollView的子視圖解除鍵盤從UITextField,UITextView?
3
A
回答
10
只需添加UITapGestureRecognizer
- (void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];
[scr addGestureRecognizer:singleTap];
}
- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
{
//Get touch point
CGPoint touchPoint=[gesture locationInView:scr];
//Hide keyBoard
[self.view endEditing:YES];
}
+0
現在它的做工精細,感謝.. – Ravindhiran 2013-02-09 13:20:53
+0
你的歡迎拉維.. – Rajneesh071 2013-02-09 13:23:01
0
試試這個,
- (void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
tapGesture.cancelsTouchesInView = NO;
[scrollView addGestureRecognizer:tapGesture];
[tapGesture release];
}
-(void)dismissKeyboard
{
[txtNotes resignFirstResponder];
[textView resignFirstResponder];
}
0
當我加入了手勢的UIScrollView
一個子類,我是有在我看來樹的各種手勢,每個干擾問題其他,如能夠點擊子視圖,滾動視圖,並在所有情況下都禁用鍵盤。我想出了這個解決方案,可以從UIScrollView
或UIViewController
的超類設置。
DismissKeyboardTapGesture
類使用ARC,可與視圖下的任何文本字段一起使用,並且不會從按鈕等子視圖中接受任何點擊。還利用iOS7滾動效果來關閉鍵盤。
從UISScrollView超設置:
_dismissKeyboard = [[DismissKeyboardTapGesture alloc] initWithView:self];
或UIViewController中:
_dismissKeyboard = [[DismissKeyboardTapGesture alloc] initWithView:self.view];
這裏是類:
@interface DismissKeyboardTapGesture : NSObject <UIGestureRecognizerDelegate>
@end
@implementation DismissKeyboardTapGesture
- (id)initWithView:(UIView *)view
{
self = [super init];
if (self) {
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
singleTap.cancelsTouchesInView = NO;
singleTap.delegate = self;
[view addGestureRecognizer:singleTap];
if ([view respondsToSelector:@selector(setKeyboardDismissMode:)]) {
// Bonus effect to dismiss keyboard by scrolling
((UIScrollView *)view).keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;
}
}
return self;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
// Don't stop any existing gestures in our view from working
if (otherGestureRecognizer.view == gestureRecognizer.view) {
return YES;
}
return NO;
}
- (void)singleTap:(UIGestureRecognizer*)gestureRecognizer
{
// Close keyboard for any text edit views that are children of the main view
[gestureRecognizer.view endEditing:YES];
}
@end
2
在iOS中7,你可以很容易地做到這一點。
scrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;
相關問題
- 1. 解除從UIScrollView NumberPad鍵盤
- 2. 如何解除多個UITextField的鍵盤
- 3. 解除定製UITextField上的鍵盤
- 4. 解除UIAlertController上的鍵盤UITextField
- 5. resignFirstResponder不解除UITextField的ASCII鍵盤
- 6. UIScrollView中有作爲的UIImageView子視圖,盤帶的UIImageView
- 7. UITextfield的清除按鈕隱藏鍵盤時,其內部UIScrollView
- 8. UITextView不刪除鍵盤
- 9. 從UIScrollView中刪除所有子視圖?
- 10. 將UIScrollView滾動到UITextView中的奇怪行爲隱藏鍵盤
- 11. 添加UIViewController作爲UIScrollView的子視圖
- 12. 作爲子視圖的UIScrollView不滾動
- 13. 從視圖中刪除UITextField
- 14. 如何使鍵盤UITextField中的Number視圖變爲默認值?
- 15. 從UIScrollView中移除視圖
- 16. 在UIView中添加UITextView作爲子視圖,然後添加到UIScrollView
- 17. 鍵盤與UITextField
- 18. 從UIScrollView中刪除子視圖並更新視圖
- 19. 鍵盤不能解除編輯文本,因爲滾動視圖
- 20. 使用沒有UITextView或UITextField的系統鍵盤
- 21. 使用RAC(5)解除UITextField中的鍵盤?
- 22. UITextView刪除所有第三方鍵盤
- 23. 鍵盤不顯示添加TTNavigator作爲子視圖
- 24. uitextfield隱藏鍵盤?
- 25. UITextField鍵盤問題
- 26. 刪除UIScrollView子視圖幫助
- 27. 當UITextField和UITextview顯示在UIWindow裏面時,粘上鍵盤
- 28. 如何使用完成鍵盤按鈕解除UITextView?
- 29. UITextview鍵盤處理,當它嵌入在UIScrollView
- 30. iPad鍵盤,UITextField,奇怪的行爲
只需添加UITapGestureRecognizer您的UIView insted的的UIScrollView – Rajneesh071 2013-02-09 13:07:02