【问题标题】:UITextView validation with code reusability具有代码可重用性的 UITextView 验证
【发布时间】:2014-12-30 09:28:05
【问题描述】:

这里是初学者,希望是一个关于防止代码重复的简单问题。

如果您的代码可以检测到在 UITextView 中输入的内容(即用于验证目的的正则表达式),并且您希望该代码应用于不同屏幕上的多个 UITextView,您将如何处理这样做而不是在每个使用 UITextViewUIViewController 中复制该代码?

-(BOOL)textField:(UITextField*)textFieldshouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;

【问题讨论】:

  • 在某个实用程序对象上有一个验证类方法。
  • 有共享委托?
  • @IanMacDonald,你指的是 AppDelegate 吗?
  • 不,我指的是您的UITextField 的代表。如果您将同一对象作为委托分配给多个 UITextField 对象,您将完成您的请求。
  • @jeffamaphone,你的意思是这样的:stackoverflow.com/questions/1658433/…stackoverflow.com/questions/11479638/… 本质上,我只是创建一个辅助方法,我在每个 textFieldshouldChangeCharactersInRange 方法中调用它,对吗?这样我每次只从 util 导入,然后调用一行而不是在所有类中使用相同的代码?

标签: ios xcode uitextview nsregularexpression


【解决方案1】:

您可以专门为此目的创建一个类。如果你需要做一些特殊的 UITextFieldDelegate 事情,你可以继承这个类或者附加你自己的委托给它。

@interface TextValidationDelegate : NSObject <UITextFieldDelegate>
@property (weak) id<UITextFieldDelegate> delegate;
@end

@implementation TextValidationDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  BOOL acceptable = YES;
  // TODO: Calculate acceptability.
  // ...

  if (acceptable && [self.delegate respondsToSelector:@selector(textField:shouldChangeCharactersInRange:replacementString:)]) {
    acceptable = [self.delegate textField:textField shouldChangeCharactersInRange:range replacementString:string];
  }

  return acceptable;
}

// TODO: Override other UITextFieldDelegate methods and pass through to self.delegate when it respondsToSelector.
@end

【讨论】:

    猜你喜欢
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 2010-12-24
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    相关资源
    最近更新 更多