React native 确认密码时未显示iOS强密码自动填充

React native 确认密码时未显示iOS强密码自动填充,react-native,react-navigation,React Native,React Navigation,iOS会自动填充第一个密码字段,但不会填充第二个密码字段。如何使密码和确认密码字段像应用程序一样自动填充 更新:似乎系统将注册表单视为登录表单,所以它会自动填充第一个密码字段。此外,当我导航回登录屏幕时,系统会提示我是否要将密码保存在keychain中,这是出乎意料的 更新:我正在使用堆栈导航(屏幕:登录和注册)。在我在注册表单中键入姓名或电子邮件后,它会自动将强密码填充到登录屏幕的密码字段和注册屏幕的第一个密码字段。有没有办法告诉系统这些是不同的形式?(如在web编程中使用不同的) 登录屏

iOS会自动填充第一个密码字段,但不会填充第二个密码字段。如何使密码和确认密码字段像应用程序一样自动填充

更新:似乎系统将注册表单视为登录表单,所以它会自动填充第一个密码字段。此外,当我导航回登录屏幕时,系统会提示我是否要将密码保存在keychain中,这是出乎意料的

更新:我正在使用堆栈导航(屏幕:登录和注册)。在我在注册表单中键入姓名或电子邮件后,它会自动将强密码填充到登录屏幕的密码字段和注册屏幕的第一个密码字段。有没有办法告诉系统这些是不同的形式?(如在web编程中使用不同的

登录屏幕

export default class Login extends Component {
    Login() {

    }

    render() {
        return (
            <IndexBackground>
                <IndexBox>
                    <IndexLogo />
                    <IndexTextInput placeholder="Name" />
                    <IndexTextInput placeholder="Password" secureTextEntry={true}/>
                    <IndexButton title="Log in" onPress={this.Login} />
                    <IndexText text="Forgot Password?" style={styles.textForgot} />
                    <IndexText text="Don't have an account?" style={styles.textSignUp}>
                        <Text style={styles.textLink} onPress={() => this.props.navigation.navigate('SignUp')}> Sign up</Text>
                    </IndexText>
                </IndexBox>
            </IndexBackground>
        )
    }
}
export default class SignUp extends Component {
    user = {
        email: '',
        name: '',
        pass: '',
        confirmpass: ''
    };

    setUser = (key, value) => {
        this.user[key] = value;
        console.log(this.user);
    }

    signUp() {

    }

    render() {
        return (
            <IndexBackground>
                <IndexBox>
                    <IndexLogo />
                    <IndexTextInput placeholder="Email" onTextChanged={(value) => this.setUser('email', value)} />
                    <IndexTextInput placeholder="Name" onTextChanged={(value) => this.setUser('name', value)} />
                    <IndexTextInput placeholder="Password" secureTextEntry={true} onTextChanged={(value) => this.setUser('pass', value)} />
                    <IndexTextInput placeholder="Confirm Password" secureTextEntry={true} onTextChanged={(value) => this.setUser('confirmpass', value)} />
                    <IndexButton title="Sign up" onPress={this.signUp} />
                    <IndexText text="Have an account?" style={styles.textSignUp}>
                        <Text style={styles.textLink} onPress={() => this.props.navigation.navigate('Login')}> Log in</Text>
                    </IndexText>
                </IndexBox>
            </IndexBackground>
        )
    }
}
const routeConfigs = {
    Login: { screen: Login },
    SignUp: { screen: SignUp }
}

const navConfigs = {
    headerMode: 'none',
    navigationOptions: {
        headerVisible: false,
    }
}

const NavLogin = createStackNavigator(routeConfigs, navConfigs);
const ContainerLogin = createAppContainer(NavLogin);

export default ContainerLogin;

请尝试下面的方法

<TextInput secureTextEntry textContentType="newPassword" />

createStackNavigator和IOS强密码存在相同的错误

我认为这是因为stack navigator不卸载非活动组件,IOS可以与它们交互。 我为登录表单添加了对onFocus事件()的订阅,并为未聚焦状态(注册处于活动状态时)呈现空登录表单:

从“反应导航”导入{withNavigationFocus};
...
类登录扩展组件{
登录(){
}    
render(){
如果(!this.props.isFocused)返回null;
返回(
...
)
}
}
使用NavigationFocus导出默认值(登录);

您可以尝试,添加道具:

  blurOnSubmit={false}
  autoCapitalize="none"
  onSubmitEditing={() => Keyboard.dismiss()}
  textContentType="oneTimeCode"

先生,你能告诉我indexTextInput是如何生成的吗?因为我看不出你提供的代码中没有任何错误!您的RN和react导航版本是什么!你能展示package.jsondid你能解决这个问题吗?还没有,仍然会发生。我的
this.onTextChanged(value)}/>
。我正在使用RN 2.0.1和
react导航
3.0.9。请在问题中发布package.json和IndexTextInput@杰夫·吉尔伯特:好的,我会试试。这正是我遇到的问题。注册后,我会导航到堆栈上的代码确认页面,但iOS必须仍然可以访问这些字段,这样它就不会认为登录发生了,也不会要求将密码保存到密钥链。你的修正解决了这个问题。
  blurOnSubmit={false}
  autoCapitalize="none"
  onSubmitEditing={() => Keyboard.dismiss()}
  textContentType="oneTimeCode"