在 IOS 7 中使用弹出窗口输入文本
Posted
技术标签:
【中文标题】在 IOS 7 中使用弹出窗口输入文本【英文标题】:Entering Text Using Pop-up in IOS 7 【发布时间】:2013-09-26 17:22:49 【问题描述】:我有一个基于 Xcode 4.6 和 ios 6 构建的应用。我现在正在使用 XCode 5 将其升级到 iOS 7。
我的这段代码在 iOS 6 上完美运行。它的作用是带来一个带有 UITextField 的弹出窗口。用户可以输入他们想要的任何文本并点击确定。我把他们的文字放在 UILabel 中。
我遇到的问题是,在 iOS 7 中,当我打开这个弹出文本框时,它是不可编辑的。触摸它没有任何作用。怎么会?
这是代码和截图
// ************
// ENTER TEXT
// ************
-(IBAction)insertText
UIAlertView* dialog = [[UIAlertView alloc] initWithTitle:@"Enter Text \n"
message:@"\n\n Keep it short and sweet"
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil];
nameField = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
[nameField setBackgroundColor:[UIColor whiteColor]];
[dialog addSubview:nameField];
[dialog show];
【问题讨论】:
供将来参考 - ***.com/questions/6319417/… 【参考方案1】:使用提供的 API 代替这个 hack。不要添加您自己的文本字段(实际上从未支持过),而是将警报视图的alertViewStyle
设置为UIAlertViewStylePlainTextInput
。这将在警报视图中为您提供一个受支持的文本输入字段。
【讨论】:
要完成这个答案:hack 不起作用,因为 iOS 7 不 支持向 UIAlertView 添加子视图。但 iOS 6 做到了。UIAlertView
从不支持子视图。它恰好适用于早期版本的 iOS。有区别。
UIAlertView 继承自 UIView。 UIView 支持 addSubview:。所以 UIAlertView 支持 addSubview: 只要不妨碍你使用它。当然,它没有得到官方支持(意思是由 Apple 记录),但它得到了支持。
仅仅因为它基于UIView
并不意味着您应该添加子视图。 Apple 提供的大多数标准 UI 组件不应该添加子视图,并且您永远不应该依赖子视图结构。这些事情发生了变化。坚持使用提供的 API,您就可以避免此类问题。
当新的 iOS 版本出现时,您永远无法完全避免更改代码 - 即使您坚持使用 API。还记得 iOS 6 中我们都必须改变实现显示旋转的方式吗?我们都坚持使用 API,Apple 改变了它。我从来没有说过完全改变 Apple 提供的视图的外观是一个好主意,但在它在技术上有效之前不会被禁止。以上是关于在 IOS 7 中使用弹出窗口输入文本的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 7 上检查蓝牙是不是在没有系统弹出窗口的情况下打开