gpt4 book ai didi

iphone - 当文本字段有输入时启用 UIBarButtonItem

转载 作者:行者123 更新时间:2023-12-03 19:45:14 29 4
gpt4 key购买 nike

每当“userInput”UITextField 中没有输入时,我尝试禁用我的发送按钮(工具栏中的 UIBarButtonItem),并在有输入时启用它。这是我写的代码 - 我不太明白为什么它不起作用。

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

if (userInput.text.length >0) {
[sendButton setEnabled:YES];
}else{
[sendButton setEnabled:NO];
}

}

我还收到一条警告,提示“控制到达非 void 函数的末尾。”

我对 xcode 和编程非常陌生,所以我不确定这告诉我什么。

感谢您的帮助!!

最佳答案

文本字段对象向其委托(delegate)发送消息shouldChangeCharactersInRange,询问是否允许更改(添加新字符或删除字符)。由于您不想拒绝对文本字段本身所做的任何更改,因此必须从此方法返回 YES。警告

control reaches end of non-void function

意味着你有一个非 void 函数,所以你应该返回一些东西。由于没有返回任何内容,因此弹出此消息。

需要记住的一件重要事情是,在进行更改之前调用此委托(delegate)方法,这是有道理的,因为正在请求委托(delegate)允许或禁止更改。如果委托(delegate)人拒绝,则无论用户输入什么内容,文本字段的值都将保持不变。

因此调用 userInput.text 是没有用的,因为它会返回旧值,因为尚未进行更改。但是,此方法的参数中有足够的信息来构造文本字段的新值。

NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string]);

完整的方法如下所示,

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string];
BOOL isFieldEmpty = [newText isEqualToString:@""];
sendButton.enabled = !isFieldEmpty;
return YES;
}

关于iphone - 当文本字段有输入时启用 UIBarButtonItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5255881/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com