UITextField 在 iOS 7.1 上没有响应
Posted
技术标签:
【中文标题】UITextField 在 iOS 7.1 上没有响应【英文标题】:UITextField doesn't respond on iOS 7.1 【发布时间】:2014-01-10 05:38:27 【问题描述】:我有一个abstract class
,它是一个UIView
子类。
它会在新的UIWindow
上创建一个视图,并向用户显示我的Custom alert
。
我有一个从这个抽象类继承的AuthorizationView
类,它包含一些UITextFields
。
问题是:如果我现在构建并发送给测试人员,这些UITextFields
不会在ios 7.1 beta
上响应。
旧版本的项目在 iOS 7.1 beta 上运行良好(来自 AppStore)。
任何版本都可以在 iOS 6.0 - iOS 7.0 上正常运行。我无法在 iOS 7.1 beta 上自己测试它。
有什么建议吗?
UITextField
创作:
fieldUser = [[UITextField alloc] initWithFrame:AUTH_FIELD_USER_FRAME];
[fieldUser setBackgroundColor:kColorClear];
[fieldUser setBorderStyle:UITextBorderStyleNone];
[fieldUser setTextAlignment:NSTextAlignmentLeft];
[fieldUser setKeyboardType:UIKeyboardTypeEmailAddress];
[fieldUser setKeyboardAppearance:[[DatabaseManager sharedInstance] keyboard]];
[fieldUser setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
[fieldUser setAutocorrectionType:UITextAutocorrectionTypeNo];
[fieldUser setAutocapitalizationType:UITextAutocapitalizationTypeNone];
[fieldUser setReturnKeyType:UIReturnKeyNext];
[fieldUser setDelegate:self];
[fieldUser setPlaceholder:NSLocalizedString(@"Window_Login_Placeholder_User", @"")];
[fieldUser setFont:kFontNormal(16.0f)];
[self addSubview:fieldUser];
抽象类:
#import "AlertWindow.h"
@interface AlertWindow ()
CGFloat alpha;
@property (nonatomic, strong) UIWindow *window;
@end
@implementation AlertWindow
- (id) init
self = [super init];
if (self)
alpha = 0.8f;
return self;
- (id) initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
alpha = 0.8f;
return self;
- (void) showAnimated:(BOOL)animated_
UIView *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[view setBackgroundColor:[UIColor blackColor]];
[view setAlpha:alpha];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.windowLevel = UIWindowLevelAlert;
self.window.backgroundColor = kColorClear;
[self.window addSubview:view];
[self.window addSubview:self];
self.window.alpha = 0.0f;
[self.window makeKeyAndVisible];
if (animated_)
__block UIWindow *animationWindow = self.window;
[UIView animateWithDuration:UINavigationControllerHideShowBarDuration animations:^
animationWindow.alpha = 1.0f;
];
else
self.window.alpha = 1.0f;
- (void) hideAnimated:(BOOL)animated_
if (animated_)
__block UIWindow *animationWindow = self.window;
[UIView animateWithDuration:UINavigationControllerHideShowBarDuration animations:^
animationWindow.alpha = 0.0f;
completion:^(BOOL finished)
self.window.hidden = YES;
self.window = nil;
];
else
self.window.hidden = YES;
self.window = nil;
- (void) hideAnimated
[self hideAnimated:YES];
- (void) setBackgroundAplha:(CGFloat)alpha_
alpha = alpha_;
@end
【问题讨论】:
【参考方案1】:所有的 Event Delegate 方法都会触及应用程序的主窗口。现在您已经创建了另一个窗口,可能是您的委托正在调用,但因为这个新窗口而隐藏。只需让窗口颜色清除颜色并验证,或者尝试打印文本字段的文本输入一些文本,会让您知道是否触发?
【讨论】:
我不认为问题出在委托内部。文本字段就像一个图像。它不响应文本区域内的触摸。 @iWheelBuy 我的意图是说,当我们点击文本字段时调用委托方法。以上是关于UITextField 在 iOS 7.1 上没有响应的主要内容,如果未能解决你的问题,请参考以下文章
UITextField 上的 UITapGestureRecognizer 不再适用于 IOS 7.1
来自 xib 的 UIControl 在 ios 7.1 上崩溃