【问题标题】:iOS hide default keyboard and open custom keyboardiOS隐藏默认键盘并打开自定义键盘
【发布时间】:2026-01-14 14:30:01
【问题描述】:

我有一个UITextview,当用户点击UITextview 时,我需要隐藏默认键盘。为此,我已经做到了,

 [myTextView setEditable: NO];

所以键盘没有显示,这里我用UIButton创建了一个自定义视图,当用户点击UITextView时我需要显示这个UIView,因为我已经完成了,

textViewDidBeginEditing{

//Here i have added UIView as subview 

}

但这种方法不起作用,因为,

[myTextView setEditable: NO];

当用户单击UIView 内的关闭按钮时,我需要关闭UIView

【问题讨论】:

    标签: ios objective-c uitextview uikeyboard


    【解决方案1】:

    您应该使用resignFirstResponder 而不是将 UITextView 设置为不可编辑。这将隐藏系统键盘。

     [myTextView resignFirstResponder];
    

    如果您想为键盘使用不同的视图,则系统提供了一个,然后将 UITextView 上的inputView 设置为您要用于代替系统键盘的自定义视图。

    myTextView.inputView = myCustomView;
    

    【讨论】:

    • 当用户点击 UItTextVeiw 时显示我的自定义视图的可能方式是什么?
    • @HarishSaran 只需在 UITextView 上设置 inputView 以在用户点击 UITextView 之前指向您的自定义视图,也许是在控制器上的 viewDidLoad 方法中
    • @Powers:我的自定义视图中有一个关闭按钮,当用户点击按钮时如何关闭视图,removefromsuperview 是这样做的方法吗?
    • @HarishSaran 如果您希望使用自定义视图关闭键盘,那么您想在 UITextView 上使用 resignFirstRepsonder 来执行此操作。
    • @Powers :我使用的是由一个按钮组成的自定义视图,而不是默认键盘,当用户点击该按钮时,我想关闭 mycustomview,resignFirstRepsonder 会这样做吗?
    【解决方案2】:

    也许使用textFieldShouldBeginEditing 而不是setEditable: NO 有效?

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
    {
       //Here i have added UIView as subview 
       return NO;
    }
    

    【讨论】: