如何在不显示键盘的情况下让UITextField接受焦点?

时间:2012-06-18 12:08:03

标签: objective-c ios

我试图找到一种方法来阻止键盘在用户点击TextField时出现,但却无法找到方法。

我将textField链接到委托之后尝试了这段代码,但它仍然无法正常工作,代码正在记录,但键盘确实出现了。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    NSLog(@"BeginEditing");
    return YES;
    [textField resignFirstResponder];
}

当我使用NO返回时,我失去了textField的焦点,这是我需要的。

我所拥有的textField充满了同一视图上按钮的值,这就是为什么我不希望键盘出现,同时我希望用户选择他们想要填充的textField。 / p>

5 个答案:

答案 0 :(得分:3)

这对您有帮助。

-(BOOL)textFieldShouldBeginEditing:(UITextField*)textField {
UIView *dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
activeField.inputView = dummyView; // Hide keyboard, but show blinking cursor
return YES;
}

我测试过,它对我有用。希望这对有类似问题的其他人有用。

答案 1 :(得分:2)

如果您只是希望用户选择要填充的文本字段而不想显示键盘,则可以执行以下操作:

  • 为您的文字字段添加标记
  • 将代码更改为:
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{
    selectedTextFieldTag = textField.tag;
    return NO;
}

使用selectedTextField值来标识要填写代码的文本字段。 return NO不允许出现键盘。

答案 2 :(得分:1)

[textField resignFirstResponder];将不会被调用,因为您在被调用之前从该方法返回。这不会发出警告吗?

尝试在此处返回NO,或者如果不起作用,请尝试在文本字段上禁用用户互动:

[myTextField setUserInteractionEnabled:NO];

答案 3 :(得分:0)

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
NSLog(@"BeginEditing");
[textField resignFirstResponder];
return YES;

}

答案 4 :(得分:0)

所以在这里你只需使用flag int变量将值赋给聚焦文本字段

在.h或.m文件中全局定义int i;标志

之后在textField Delegate方法中使用以下代码...

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

    if (textField == yourtextField1 ) {
        i=1;
    }
    else if (textField == yourtextField2 ) {
        i=2;
    }
    else if (textField == yourtextField3 ) {
        i=3;
    }
    else if (textField == yourtextField4 ) {
        i=4;
    }
    return NO;
}
-(IBAction)yourbutton1_Clicked:(id)sender{
           if( i == 1){
              yourtextField1.text=yourbutton1.titleLabel.text;
          }
          else if ( i == 2){
            yourtextField2.text=yourbutton1.titleLabel.text;
          }
          else if ( i == 3){
            yourtextField3.text=yourbutton1.titleLabel.text;
          }
          else if ( i == 4){
            yourtextField4.text=yourbutton1.titleLabel.text;
          }
          else{
              NSLog(@"Please Click On TextField");//here you can put AlertView Message
          }
}

依旧.......

你也可以使用普通方法和按钮的发送者ID,也可以标记......