没有键盘的UITextField功能

And*_*yer 20 uitextfield

我正在构建一个带有自定义界面的应用程序来输入文本,并使用UILabel进行显示.然后,用户必须能够复制和粘贴文本,因此我选择了UITextField.

我遇到的问题是我无法弄清楚如何让UITextField允许选择,复制,粘贴等,但是在选择字段时没有显示键盘.

我已经阅读了许多与此类似的帖子,但没有人提出完全相同的问题,也没有任何解决方案适合我.我已经尝试使该字段不可编辑,这会阻止键盘出现,但也不允许复制和粘贴.我还阅读了建议继承UITextField的注释,但我读过的没有给出具体的例子.

可以简单地完成我想要的工作,还是我需要为键盘或其他选项创建自定义视图?

谢谢,安德鲁

解:

最后,我在stackoverflow上发现了另一个类似的(但不是确切的)问题,一个答案给出了我的问题的解决方案.解决这个问题的方法就是让应用程序显示一个虚拟视图作为键盘,其他一切都按照应有的方式工作.

UIView *dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];    
VIN.inputView = dummyView; // Hide keyboard, but show blinking cursor
Run Code Online (Sandbox Code Playgroud)

它适用于UITextField和UITextView,需要将它们设置为可编辑.

And*_*yer 27

解:

最后,我在stackoverflow上发现了另一个类似的(但不是确切的)问题,一个答案给出了我的问题的解决方案.解决这个问题的方法就是让应用程序显示一个虚拟视图作为键盘,其他一切都按照应有的方式工作.

UIView *dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];    
VIN.inputView = dummyView; // Hide keyboard, but show blinking cursor
Run Code Online (Sandbox Code Playgroud)

它适用于UITextFieldUITextView它们需要设置为可编辑.


yag*_*rax 10

作者的代码......

UIView *dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];    
VIN.inputView = dummyView; // Hide keyboard, but show blinking cursor
Run Code Online (Sandbox Code Playgroud)

(其中'VIN'是UITextField变量,此代码放在viewDidLoad之类的地方)

...确实可以防止显示iPhone/iPad弹出键盘.

但是,这只是键盘界面的"显示"部分.如果您安装了外接键盘,例如Apple的物理iPhone/iPad键盘,可以插入30针或其中一个支持蓝牙的键盘(或者甚至使用带有模拟器的Mac键盘),用户仍然可以输入字段而不用显示键盘弹出显示.

此外,即使没有显示键盘弹出窗口,用户仍然可以通过双击字段并选择PASTE从粘贴板粘贴到字段中.

以下ADDITIONAL代码可防止使用这些键盘并防止PASTE:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSLog(@"myXViewController shouldChangeCharactersInRange");
    return FALSE;
}
Run Code Online (Sandbox Code Playgroud)

...仍然允许选择,但不能编辑字段中的文本.