从文本字段中移除焦点

Posted

技术标签:

【中文标题】从文本字段中移除焦点【英文标题】:Remove focus from the textfield 【发布时间】:2014-02-25 12:47:00 【问题描述】:

我正在对文本字段执行两项操作: 1) 使用平移手势移动文本字段。 2)当用户点击它时在文本字段上书写。 担心的是我想一次执行一个操作,即当用户正在写作时,他不能滚动,反之亦然。

UIButton 动作名称---按钮 UIButton 出口名称---optionButton

- (IBAction)button:(id)sender

    if([_optionButton.titleLabel.text isEqualToString:@"SCROLL"])
    
        NSLog(@"can scroll");
        NSLog(@"POINT=============%d   ",point);
        point=0;
        [_optionButton setTitle:@"WRITE" forState:UIControlStateNormal];
        textField1.enabled=NO;
    
    else
            NSLog(@"can write");
        NSLog(@"POINT=============%d   ",point);
        point=1;
        [_optionButton setTitle:@"SCROLL" forState:UIControlStateNormal];
        textField1.enabled=YES;
    

point变量控制整个操作,在开头设置为1。这意味着用户可以在开头写,如果他想写,他必须按下按钮。 我面临的问题是通过使用“textField1.enabled=NO”我无法滚动文本字段。 是否有任何功能可以让我但可以滚动它。

【问题讨论】:

[文本域 resignFirstResponder]; 【参考方案1】:

您可以使用此代码来移除焦点(如评论之一所述),

[textField1 resignFirstResponder];

【讨论】:

【参考方案2】:

您也可以通过调用 [textField1 endEditing:YES] 来移除文本字段的焦点

【讨论】:

【参考方案3】:

一个 UITextfield 只有 1 行,所以你不能滚动它。

更新

如果您想用手指移动 UITextfield,请在父视图中使用 UIPanGestureRecognizer 并在您的 uitextfield 中应用更改。

【讨论】:

【参考方案4】:

您可以简单地按照以下步骤操作:

在控制器中实现 UITextFieldDelegate

class ClassName: UIViewController, UITextFieldDelegate ....

实现“textFieldShouldBeginEditing”功能

class ClassName: UIViewController, UITextFieldDelegate 

   func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool 
    return false
   

 

所以在 textFieldShouldBeginEditing 中返回 false 将根本不允许编辑到 UITextField。

【讨论】:

以上是关于从文本字段中移除焦点的主要内容,如果未能解决你的问题,请参考以下文章

WPF:如何以编程方式从 TextBox 中移除焦点

如何从Tkinter,Python中的Text小部件中移除焦点

如何从 UITextField 中移除焦点?

如何从提交按钮中移除焦点

如何从主 QWidget 中移除 QGraphicsTextItem 的焦点

如何从 ScrollView 内的 RecyclerView 中移除焦点?