2013-02-09 54 views

回答

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一個子類,我是有在我看來樹的各種手勢,每個干擾問題其他,如能夠點擊子視圖,滾動視圖,並在所有情況下都禁用鍵盤。我想出了這個解決方案,可以從UIScrollViewUIViewController的超類設置。

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; 
相關問題