我还是xcode/iOS的新手,有以下问题:
为了显示一些移动调试信息,我将一个UIview作为outlet-property添加/连接到我的一个Viewcontroller.此视图是UIview的自定义子类.现在我添加了一些UIlabel作为此视图的子视图,并希望将这些标签的插座连接拖到我的customUIview.h文件中,以便可以将这些标签作为我的自定义UIview类的属性进行访问(无需直接从查看控制器).
问题是界面构建器(我使用的是Storyboards/xcode4.3)没有成功.我可以将插座连接到ViewControllerClass.h,但不能连接到我的子视图的.h文件.任何人都可以指出问题出在哪里?
我有几个UITextView子视图,都使用相同的自定义输入界面(基本上是带有自动填充选项和保存按钮的数字键盘).
我的问题是当从我的自定义键盘修改文本字段的文本时,委托方法shouldChangeCharactersInRange:不被调用(当将文本从剪贴板粘贴到文本字段时以及使用标准数字键盘键盘时它确实有效).文本字段的文本更改,但不调用用于防止无效条目的委托方法.风格DidBeginEditing的其他委托方法:总是被调用.
尽管SO LINK中说的是文档声明将调用shouldChangeCharactersInRange:delegate方法:"只要用户键入新字符或删除现有字符,文本视图就会调用此方法."
我错过了什么?
相关代码部分:
ViewController.h:
@interface ManualPositionViewController : UIViewController <UITextFieldDelegate> {
LocationEntryTextField *latitude;
}
@property (nonatomic, retain) IBOutlet LocationEntryTextField *latitude;
@property (nonatomic, retain) IBOutlet LocationKeyboard *locationKeyboard;
..
Run Code Online (Sandbox Code Playgroud)
ViewController.m:
@synthesize latitude;
@synthesize locationKeyboard;
self.latitude.inputView = locationKeyboard;
self.latitude.delegate = self;
- (void)textFieldDidBeginEditing:(LocationEntryTextField *)aTextField {
NSLog(@"textFieldDidBeginEditing called!");
self.locationKeyboard.currentTextfield = aTextField;
}
- (BOOL)textField:(LocationEntryTextField *)editedTextField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)replacementString {
NSLog(@"shouldChangeCharactersInRange called!");
NSCharacterSet *decimalSet = [NSCharacterSet decimalDigitCharacterSet];
if ([[replacementString stringByTrimmingCharactersInSet:decimalSet] isEqualToString:@""]) {
NSLog(@"Result: YES");
return YES;
}
else { …Run Code Online (Sandbox Code Playgroud)