我正在使用带有UITextView子视图的AlertView来让用户回复我的应用中的帖子,但是当用户键入超过字符限制时,我希望警报的“回复”按钮被禁用。将禁用这样的警报视图按钮让我的应用程序被拒绝,有更好的方法吗?
-(void)textViewDidChange:(UITextView *)textView {
if (!replyAlert) {
return;
}
//character count
replyAlert.title = [NSString stringWithFormat:@"Reply to Post (%i/250)", [textView.text length]];
if ([textView.text length]>=250) {
//disable alert view button
for (UIView* view in [replyAlert subviews])
{
if ([[[view class] description] isEqualToString:@"UIAlertButton"])
{
UIButton *button = (UIButton*)view;
if ([button.titleLabel.text isEqualToString:@"Reply"]) {
//disable
button.enabled = NO;
}
}
}
} else if ([textView.text length]==249) {
//re-enable button if user deleted a character
for (UIView* view in [replyAlert subviews])
{
if ([[[view class] description] isEqualToString:@"UIAlertButton"])
{
UIButton *button = (UIButton*)view;
if ([button.titleLabel.text isEqualToString:@"Reply"]) {
//enable
button.enabled = YES;
}
}
}
}
}
答案 0 :(得分:1)
在委托(UIAlertViewDelegate)上查看此方法
- (BOOL)alertViewShouldEnableFirstOtherButton:(UIAlertView *)alertView
每次用户在警报视图中将字符键入文本字段时,都会调用此方法,假设您使用的是UIAlertViewStylePlainTextInput(?)。因此,在此方法中,您可以检查文本字段中文本的长度,并相应地返回TRUE / FALSE。
该方法仅适用于iOS 5.0或更高版本,如果支持旧版本,则可能会出现问题。
如果要将自己的文本字段作为子视图添加到警报视图中,那么仅此一项就会导致应用被拒绝,因为它表明不会操纵视图层次结构。如果你正在使用开箱即用的文本输入样式警报视图,只是导航子视图以检查按钮标题并禁用它们,我会感到惊讶(注意这是一个主观意见),如果这导致拒绝应用程序。