UITableView onTouch 隐藏键盘

Posted

技术标签:

【中文标题】UITableView onTouch 隐藏键盘【英文标题】:UITableView onTouch hide keypad 【发布时间】:2012-03-14 10:45:30 【问题描述】:

我有一个UITableView,其中我放置了一个UIButton(作为单元格的子视图)。同样在桌子下方,我有一个UITextField。在触摸 textField 时,键盘会像往常一样出现。我想要的是在触摸桌子时关闭键盘。

我考虑的一个选项是将UITapGestureRecognizer 设置为UITableView。但是我提出了这个想法,因为我在 tableCell 上有一个按钮,然后它变得没有响应。

另外,我不希望键盘上的完成或返回按钮。我的意思是,我不希望键盘从键盘上消失,而是在触摸桌子时注意它所拥有的按钮。

【问题讨论】:

看看这个。 ***.com/a/6370673/641062 【参考方案1】:

也许你可以试试这个。

//NSnotification when keyboard is shown
- (void)keyboardWasShown:(NSNotification  *)notification
    
    //  Get the size of the keyboard.
    if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)

        if(UIInterfaceOrientationPortrait==orientation || UIInterfaceOrientationPortraitUpsideDown==orientation)
            keyboardSize=CGSizeMake(320.000000, 216.000000);
        
     else if(UIInterfaceOrientationLandscapeLeft==orientation || UIInterfaceOrientationLandscapeRight==orientation)
        
            keyboardSize=CGSizeMake(162.000000, 480.000000);
        
    
    else if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
        if(UIInterfaceOrientationPortrait==orientation || UIInterfaceOrientationPortraitUpsideDown==orientation)
            keyboardSize=CGSizeMake(768.000000, 264.000000);        

        else if(UIInterfaceOrientationLandscapeLeft==orientation || UIInterfaceOrientationLandscapeRight==orientation)
        
            keyboardSize=CGSizeMake(352.000000,1024.000000);

        
    

    //  Adjust the bottom content inset of your scroll view by the keyboard height.
    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.height, 0.0);
    scrvwLogig.contentInset = contentInsets;
    scrvwLogig.scrollIndicatorInsets = contentInsets;

    // Scroll the target text field into view.
    CGRect aRect = self.view.frame;
    aRect.size.height -= keyboardSize.height;
    if (!CGRectContainsPoint(aRect, txtpassword.frame.origin) ) 

        CGPoint scrollPoint=CGPointZero;
        //check flag for iPhone orientation
        if(flgLandScape)        
           scrollPoint = CGPointMake(0.0, txtpassword.frame.origin.y-70);
        //check flag for iPhone/iPad orientation
        else if(flgPort || flgPortiPad)
           scrollPoint = CGPointMake(0.0, txtpassword.frame.origin.y - (keyboardSize.height-50));        
        //check flag for ipad orientation
         else if(flgLandScapeiPad)        
          scrollPoint = CGPointMake(0.0, txtpassword.frame.origin.y-130);  

        [scrvwLogig setContentOffset:scrollPoint animated:YES];
    



//when keyboard is hide

- (void) keyboardWillHide:(NSNotification *)notification 

    UIEdgeInsets contentInsets = UIEdgeInsetsZero;
    scrvwLogig.contentInset = contentInsets;
    scrvwLogig.scrollIndicatorInsets = contentInsets;

【讨论】:

【参考方案2】:

您也可以使用UIView(或 UIButton)。在键盘出现之前,添加一个透明的UIView (320x480) 并且在该视图的触摸事件中,您可以隐藏键盘并移除该视图。

【讨论】:

@Nitish: 嗯是的...所以你想在滚动或触摸时隐藏键盘? @Nitish:您可以尝试的另一种方法是在表格滚动时隐藏键盘。 我想隐藏触摸键盘。但是表格可以滚动。

以上是关于UITableView onTouch 隐藏键盘的主要内容,如果未能解决你的问题,请参考以下文章

键盘隐藏时 UITableView 略微上升

如何在iOS Obj-C中隐藏键盘触摸UITableView

使用自定义 uitableViewCell 按下回车键或单击 uitableView 时隐藏键盘

仅当键盘覆盖视图时如何更改 UITableView 内容插图?

UITableView 增加 contentInset 底部不滚动

ContentInsets 不适用于 UITableView