我有一個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. 在觸摸UITextView或UITextField在鍵盤演示上的UIScrollView問題
- 3. 在UITextView中的UIScrollView的鍵盤方向
- 4. 解除定製UITextField上的鍵盤
- 5. 解除UIAlertController上的鍵盤UITextField
- 6. 如何解除多個UITextField的鍵盤
- 7. resignFirstResponder不解除UITextField的ASCII鍵盤
- 8. 駁回爲UITextField觸發iPhone鍵盤在一個子視圖
- 9. 取消UIScrollView中的UITextField十進制鍵盤鍵盤
- 10. UIScrollView中有作爲的UIImageView子視圖,盤帶的UIImageView
- 11. UITextfield的清除按鈕隱藏鍵盤時,其內部UIScrollView
- 12. 當UITextField位於UIScrollView中時,使用Tap Gesture解除鍵盤的問題。
- 13. UITextView不刪除鍵盤
- 14. UITextField鍵盤沒有解僱
- 15. UIButton作爲UITextfield的子視圖
- 16. 從UIScrollView中刪除所有子視圖?
- 17. 將UIScrollView滾動到UITextView中的奇怪行爲隱藏鍵盤
- 18. 添加UIViewController作爲UIScrollView的子視圖
- 19. UIButton作爲複雜的UIScrollView子視圖
- 20. 作爲子視圖的UIScrollView不滾動
- 21. 在iPad上使用解除鍵盤圖標更改uitextfield
- 22. 從視圖中刪除UITextField
- 23. UITextField鍵盤不再工作
- 24. 如何使鍵盤UITextField中的Number視圖變爲默認值?
- 25. 子視圖上的UITextField返回鍵
- 26. 爲什麼UITextField becomeFirstResponder在我的子視圖控制器中不顯示鍵盤?
- 27. 從UIScrollView中移除視圖
- 28. 鍵盤類型爲UITextField
- 29. 鍵盤與UITextField
- 30. 在UIView中添加UITextView作爲子視圖,然後添加到UIScrollView
只需添加UITapGestureRecognizer您的UIView insted的的UIScrollView – Rajneesh071 2013-02-09 13:07:02