0

Objective C でビューを作成し、React Native で使用したいのですが、これを行う方法がわかりません。私のコードは次のとおりです: Obj-C:

#import "DGTAuthenticateButtonView.h"
#import "RCTBridge.h"
#import "RCTEventDispatcher.h"
#import "UIView+React.h"
#import <DigitsKit/DigitsKit.h>

@implementation DGTAuthenticateButtonView

RCT_EXPORT_MODULE()
- (UIView *) view {
  UIButton *button = [[UIButton alloc] init];
  [button setTitle:@"REGISTER" forState:UIControlStateNormal];
  return button;

}

RCT_EXPORT_METHOD(authenticate) {
  Digits *digits = [Digits sharedInstance];
  DGTAuthenticationConfiguration *configuration = [[DGTAuthenticationConfiguration alloc] initWithAccountFields:DGTAccountFieldsDefaultOptionMask];
  configuration.phoneNumber = @"+345555555555";
  [digits authenticateWithViewController:nil configuration:configuration completion:^(DGTSession *newSession, NSError *error){
  }];

}

@end

TouchableOpacityを呼び出したいauthenticateのですが、うまくいきませんでした:(

import React, {Component} from 'react';
import {
    AppRegistry,TouchableOpacity
} from 'react-native';



var requireNativeComponent = require('requireNativeComponent');

var DGTAuthenticateButtonView = requireNativeComponent('DGTAuthenticateButtonView', DGTAuthenticateButtonView);

class TestProj extends Component {
    render() {
        return (

            <TouchableOpacity style={{flex: 1, backgroundColor: 'green'}}
                onPress={() => DGTAuthenticateButtonView.authenticate()}
            />

        )
    }
}

AppRegistry.registerComponent('TestProj', () => TestProj);

誰でもこれを行う方法を知っていますか? 前もって感謝します。

4

1 に答える 1

1

ここで 2 つの異なる概念を混在させているようです。

ネイティブ UI コンポーネントrender(RN関数でコンポーネントとして使用できるネイティブ ビュー) を作成できます。または、ネイティブ モジュール(ネイティブ機能を追加して JS コードから呼び出すことができるモジュール) を作成できます。このモジュールにはビューがありません。

私が知る限り(RCTViewManagerサブクラスのコードを含めなかった)、ネイティブ側(ビューを返す)で作成しようとしてNative UI Componentsいますが、JSでそれをそのまま使用していません(あなたのコンポーネントrender)。また、ここでやろうとしているように、ネイティブ ビューでメソッドを直接呼び出すことはできないことも知っておく必要があります。

次のいずれかの解決策を使用することをお勧めします。

  1. カスタマイズされたネイティブ UI が本当に必要な場合は、 を作成するための指示に従い、Native UI Componentレンダリング関数でコンポーネントを使用してください。次に、コールバックにマップされた prop を使用して、ボタンの押下を伝えることができます (ネイティブから JS へのイベントについては、こちらを参照してください)。
  2. カスタム UI が必要ない場合 (TouchableOpacity例のように使い続けたい場合)、指示に従ってNative Module. authenticateここでネイティブロジックのみを実行しようとしていたように、メソッドを静的に呼び出すことができます。メソッドを変更して、authenticate追加のパラメーター (reject/resolve promise または完了時に JS に通知するコールバック) を受け取ることもできます。
于 2016-10-14T12:24:45.137 に答える