1

我试图找到一种方法来防止当用户点击 TextField 时出现键盘但找不到方法。

在将我的 textField 链接到委托后,我尝试了此代码,但它仍然对我不起作用,代码正在记录,但键盘确实出现了。

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

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

我拥有的 textFields 填充了来自同一视图上的按钮的值,这就是我不希望键盘出现的原因,同时我希望用户选择他们想要填充的 textField。

4

5 回答 5

4

如果您只想让用户选择要填充的文本字段并且不想显示键盘,那么您可以执行以下操作:

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

使用selectedTextFieldvalue 来确定要填写代码的文本字段。return NO不允许键盘出现。

于 2012-06-18T12:21:02.413 回答
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;
}

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

于 2013-04-21T19:35:13.537 回答
1

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

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

[myTextField setUserInteractionEnabled:NO];
于 2012-06-18T12:09:55.537 回答
0
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
NSLog(@"BeginEditing");
[textField resignFirstResponder];
return YES;

}
于 2012-06-18T12:10:38.040 回答
0

所以在这里你只需使用标志 int 变量将值分配给焦点文本字段

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

之后在 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和标签的常用方法......

于 2012-06-18T12:24:15.333 回答