UIAlertView 文本字段捕获 onchange
Posted
技术标签:
【中文标题】UIAlertView 文本字段捕获 onchange【英文标题】:UIAlertView textfield capture onchange 【发布时间】:2012-11-07 11:01:29 【问题描述】:我正在尝试实现自定义 AlertView。
这个想法是让 alertview 带有文本字段和取消按钮。
我不能做的是实时检查文本字段中输入的字符。我知道我可以使用– alertViewShouldEnableFirstOtherButton:
做到这一点,但我不想要另一个按钮。我希望在没有按钮的情况下做同样的事情。
在 android 中,您可以将侦听器添加到文本字段 onchange。
尝试使用此 uitextfield 函数来执行此操作,但它没有被实时调用,或者我可能以错误的方式使用它。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
textField = [alert textFieldAtIndex:0];
if ([textField.text length] == 0)
NSLog(@"Hello");
return NO;
return NO;
那么如何正确地做到这一点呢?
【问题讨论】:
你设置了文本域委托吗? 不.. 我应该如何以及在哪里做呢?抱歉,我还不能清楚地理解delegate。 看看我的回答就好了... 仅供参考,ios5 将 UITextField 功能添加到 UIAlertView。有关如何完成的示例,请参阅此答案:***.com/a/8994609/2263561 【参考方案1】:试试这个
UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"New List Item", @"new_list_dialog")
message:@"this gets covered" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)];
myTextField.delegate = self;
[myTextField setBackgroundColor:[UIColor whiteColor]];
[myAlertView addSubview:myTextField];
[myAlertView show];
[myAlertView release];
和文本字段方法
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
NSLog(@" %@", [textField.text stringByReplacingCharactersInRange:range withString:string]);
return YES;
【讨论】:
对不起,它说委托方法中的类型不兼容,从 UItextfielddelegate 到 MYCLASSNAME。但是,感谢您抽出宝贵的时间查看此内容。王子已经用可行的解决方案回答了我的问题 很好,你找到了解决方案..但是这段代码工作得很好......我已经测试过了..可能你忘记在你的类 .h 文件中设置这一行 UIViewController您可以为UITextFieldTextDidChangeNotification
添加观察者,该观察者将在text
changes
在textfield
中发布。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(controlTextDidChange:)
name:UITextFieldTextDidChangeNotification object:[alert textField]];
选择器如下:
- (void)controlTextDidChange:(NSNotification *)notification
if ([notification object] == [alert textField])
// [alert textField] has changed
编辑:remove
Observer
finish
正在做
[[NSNotificationCenter defaultCenter] removeObserver:UITextFieldTextDidChangeNotification];
【讨论】:
伟大的。它按预期工作。非常感谢你。我想我得看看 NotificationCentre 参考资料。 还有一件事......当你不需要这个观察者时,只需删除它。以上是关于UIAlertView 文本字段捕获 onchange的主要内容,如果未能解决你的问题,请参考以下文章