如何解决在 iOS 拆分视图中隐藏方向更改时的键盘
我想在方向改变时强行隐藏 iOS 屏幕键盘。据了解,在大多数情况下,人们希望当前的交互能够独立于手机的方向而继续。就我而言,由于空间限制,我需要为文本输入提供替代视图 - 键盘覆盖了太多视图。
我找到了几种方法来实现这一点。最流畅的作品
interface Props {}
interface State {
coinValue: number;
}
export class Exchange extends React.Component<Props,State> {
constructor(props: Props) {
super(props);
this.state = { coinValue: 0 };
}
currency = () => {
const real = 17.47;
const v = this.state.coinValue;
const result = v * real;
alert("$"+result+ " Peso Argentino")
}
render() {
return(
<View style={styles.container}>
<KeyboardAvoidingView
style={styles.container}
behavior={Platform.OS === "ios" ? "padding" : "height"}
>
<Header />
<View style={styles.header}>
<Text style={styles.coin}>Moeda</Text>
<View style={styles.card}>
<Image
style={styles.img}
source={arFlag}
/>
<Text style={styles.typeOfCoin}>Peso Argentino</Text>
<Text style={styles.valueOfCoin}>R$17,28</Text>
<Feather
name="rotate-ccw"
size={14}
color={colors.heading}
/>
</View>
</View>
<View style={styles.value}>
<Text style={styles.insertValue}>Insira o valor</Text>
<TextInput
style={styles.input}
placeholder="9000"
/>
<View style={styles.btn}>
<Button
title="Converter"
/>
</View>
</View>
<View style={styles.convertedValue}>
{/** <Text style={visible ? styles.unhideValue : styles.hideValue}>{ newValue }</Text>*/}
<Text style={[styles.textValue}>R$10M</Text>
</View>
</KeyboardAvoidingView>
</View>
);
}
}
(或使用 override func viewWillTransition(to size: CGSize,with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size,with: coordinator)
view.endEditing(true)
}
而不是 myTextView.resignFirstResponder()
)
这适用于普通的视图控制器。但是,我的问题是拆分视图的详细视图控制器。即使在不支持同时显示列表和详细视图的设备上,上述方法也能成功。但是,当更改为“所有可见”显示模式时,不会调用 view.endEditing()
。
我尝试的下一个选项是使用
订阅设备方向更改事件viewWillTransition()
然后像这样处理事件(其中 NotificationCenter.default.addObserver(self,selector: #selector(orientationChanged),name: UIDevice.orientationDidChangeNotification,object: nil)
和 keyboardVisisble
跟踪键盘可见性和上次使用的文本视图):
activeTextView
事实证明,最后编辑的文本视图此时不再是第一响应者。
那么现在第一响应者可能是什么?假设文本视图可能已在此过程中被破坏和重新创建,因此直接在故事板句柄上调用 @objc func orientationChanged(notification: NSNotification) {
if keyboardVisisble {
if (activeTextView != nil) && (activeTextView!.isFirstResponder) {
activeTextView!.resignFirstResponder()
}
}
}
并不能解决问题。
我怎样才能摆脱键盘?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。