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

XCode 6项目在ios 7.1上segue后崩溃

日期选择器在文本字段 iOS 8 上崩溃

来自 xib 的 UIControl 在 ios 7.1 上崩溃

在 removeFromParent 上 Sprite Kit iOS 7.1 崩溃

Jenkins 生成的 ipa 无法在 iPhone 上安装(iOS 9 + XCode 7.1)