Cha*_*les 9 iphone mobile objective-c ios
我试图用来textFieldShouldBeginEditing
禁用键盘显示自定义UITextField
.我正在实施所有UITextFieldDelegate
方法.但是,出于某种原因,textFieldShouldBeginEditing
实际上永远不会被调用.
始终调用以下委托方法:
– textFieldDidBeginEditing:
– textFieldShouldEndEditing:
– textFieldDidEndEditing:
Run Code Online (Sandbox Code Playgroud)
视图的结构如下:
UIViewController
它拥有一个滚动视图.根据视图的状态,此ScrollView将包含一个UIView
自定义列表UITextFields
.
我在这台设备上运行iOS 4.3.5(8L1).
有任何想法吗?
编辑; 添加了一些代码片段:
UIViewController
有以下界面
@interface AViewController: UIViewController<UITextFieldDelegate>
Run Code Online (Sandbox Code Playgroud)
加载UIViewController后,我使用将所有UITextField连接到视图
aSubView.aTextField.delegate = self;
Run Code Online (Sandbox Code Playgroud)
位于AViewController中的(简化)委托实现
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
return YES;
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
return YES;
}
Run Code Online (Sandbox Code Playgroud)
自定义UITextField
代码
简化的实施文件 -
#import "PVEntryTextField.h"
#import "EntryViewController.h"
@implementation PVEntryTextField
@synthesize isPasswordField, state, singleTap;
- (id)initWithCoder:(NSCoder *)inCoder
{
if (self = [super initWithCoder:inCoder])
{
self.font = [UIFont fontWithName:@"Helvetica-Bold" size:19];
self.textColor = [UIColor colorWithRed:51.0/255.0
green:51.0/255.0
blue:51.0/255.0
alpha:1.0];
self.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
}
return self;
}
- (CGRect)textRectForBounds:(CGRect)bounds
{
return CGRectMake(bounds.origin.x + 16, bounds.origin.y,
bounds.size.width - 16*2 - 10, bounds.size.height);
}
- (CGRect) editingRectForBounds:(CGRect)bounds
{
return [self textRectForBounds:bounds];
}
- (BOOL) canBecomeFirstResponder
{
return YES;
}
- (void) updateState:(int) newState
{
state = newState;
}
- (void)dealloc
{
[super dealloc];
}
@end
Run Code Online (Sandbox Code Playgroud)
llu*_*ero 15
是否可以textFieldShouldBeginEditing
通过方法的默认实现调用canBecomeFirstResponder
?
尝试通过[super canBecomeFirstResponder]
或仅删除它来实现该方法.