我有一个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