React Native中pointerEvent屬性

在React Native界面開發中, 如果使用絕對定位布局,在代碼運行時的某個時刻有可能會遮蓋住它的下方的某個組件。這是因為絕對定位只是說這個組件的位置由它父組件的邊框決定。 絕對定位的組件可以被認為會覆蓋在它前面布局(JSX代碼順序)的組件的上方.

如果被遮蓋住的組件需要處理觸摸事件。比如我們在一個地圖組件上覆蓋了一個圖像組件用來顯示信息,又不想讓這個圖像組件影響用戶手指拖動地圖的操作,這時就需要使用圖像組件從View組件繼承得到的pointerEvents屬性來解決這個問題.

**pointerEvents 是字符串類型的屬性, 可以取值 none,box-none,box-only,auto.

  1. none 發生在本組件與本組件的子組件上的觸摸事件都會交給本組件的父組件處理.
  2. box-none 發生在本組件顯示范圍內,但不是子組件顯示范圍內的事件交給本組件,在子組件顯示范圍內交給子組件處理
  3. box-only 發生在本組件顯示范圍內的觸摸事件將全部由本組件處理,即使觸摸事件發生在本組件的子組件顯示范圍內
  4. auto 視組件的不同而不同,并不是所有的子組件都支持box-none和box-only兩個值,使用時最好測試下

下面是示例代碼:

import React, { Component } from 'react';
import {AppRegistry,StyleSheet,Text,View
} from 'react-native';class AwesomeProject extends Component {constructor(props) {super(props); //必須有這句代碼 父組件向子組件傳遞屬性, 比如styles屬性等this.state = {bigButtonPointerEvents: null //狀態機變量控制大按鈕是否工作};this.onBigButtonPressed = this.onBigButtonPressed.bind(this);this.onSmallButtonPressed = this.onSmallButtonPressed.bind(this);}onBigButtonPressed() {console.log('Big button pressed');}onSmallButtonPressed() {if (this.state.bigButtonPointerEvents === null) {console.log('big button will not responde');this.setState({bigButtonPointerEvents: 'none'});//改變狀態機變量return;}console.log('big button will responde');this.setState({bigButtonPointerEvents: 'box-none'});//改變狀態機變量}render() {return (//根View<View style={styles.container}pointerEvents='box-none'><Text style={styles.sButtonStyle}onPress={this.onSmallButtonPressed}>SmallButton</Text><View style={styles.bButtonStyle}pointerEvents={this.state.bigButtonPointerEvents}><Text style={{flex:1,fontSize: 20}}onPress={this.onBigButtonPressed}>BigButton</Text></View></View>);}
}const styles = StyleSheet.create({container: {   //根View樣式flex: 1},sButtonStyle: {      // 小按鈕的樣式fontSize: 20,left: 130,top: 50,width: 150,height: 35,backgroundColor: 'green'},bButtonStyle: {     //大按鈕的樣式left: 130,top: 50,width: 150,height: 70,backgroundColor: 'grey',alignItems: 'center',}
});AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);
復制代碼

運行效果:

運行后,最開始時 Big Button可以正常工作, 因為Big Button父組件中pointerEvent為null, 然后當點擊小按鈕時,這時候pointerEvent值為none 大按鈕就失效了。 當再按小按鈕時,pointerEvent為 box-none, 大按鈕就又可以處理事件了.

運行結果:

PS: 本來大按鈕并沒有單獨用一個View組件嵌套, 直接把pointerEvent屬性定義在大按鈕的Text組件上, 在Android設備上發現沒有效果, 有點不明覺厲了, 不知道是RN的Bug還是Android就是這種機制, 請大神解答了

更多精彩請關注微信公眾賬號likeDev,公眾賬號名稱:愛上Android。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255915.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255915.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255915.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Rar Java Zip

http://wolfdream.iteye.com/blog/428588轉載于:https://www.cnblogs.com/diyunpeng/p/5218381.html

庫卡機器人CELL程序解析

KUKA機器人 CELL程序 解析及注釋&ACCESS RVP&REL 4&COMMENT HANDLER on external automaticDEF CELL ( );EXT EXAMPLE1 ( );EXT EXAMPLE2 ( );EXT EXAMPLE3 ( ) ;FOLD INITDECL CHAR DMY[3]DMY[]"---";ENDFOLD (INIT);FOLD BASISTECH INIIR_STOPM ( )…

Ubuntu 16.04服務器安裝及軟件配置

1.配置靜態地址 vim /etc/network/interfaces auto enp1s0 iface enp1s0 inet static address 192.168.1.131 netmask 255.255.255.0auto enp2s0 iface enp2s0 inet static address 192.168.2.131 netmask 255.255.255.0auto enp3s0 iface enp3s0 inet static address 192.168.…

[軟件測試airtest軟件安裝]——填坑

目錄 1、安裝Python環境&#xff08;版本問題&#xff09; 2、連接手機出現連接上了但是無法進行點擊 airtest官網&#xff1a; https://airtest.doc.io.netease.com/for_newer/ 關于軟件測試剛入門的可以參考進行了解&#xff1a;https://airtest.doc.io.netease.com/tuto…

KUKA 機器人SPS.SUB程序解析

&ACCESS RVO&COMMENT PLC on controlDEF SPS ( );FOLD DECLARATIONS;FOLD BASISTECH DECL;Automatik externDECL STATE_T STAT定義STATE_T類型的變量。該結構為&#xff1a;STRUC STATE_T CMD_STAT RET1&#xff0c; CMD_STAT是枚舉類型數據&#xff0c;組成了STATE_…

jquery validate表單驗證插件

1 表單驗證的準備工作 在開啟長篇大論之前&#xff0c;首先將表單驗證的效果展示給大家。 1.點擊表單項&#xff0c;顯示幫助提示         2.鼠標離開表單項時&#xff0c;開始校驗元素    3.鼠標離開后的正確、錯誤提示及鼠標移入時的幫助提醒 對于初學者而言&…

【Python位運算】——左移操作(<<)右移操作>>

目錄 左移操作 右移操作 其他博主的理解 應用——力扣題目78. 子集 解法 深度優先搜索 位運算 參考文獻 左移操作 # 左移操作&#xff0c;左移一位相當于乘以b&#xff0c;a<<b,a a*(2^b) print(2<<3) # 2*2^3 16&#xff0c;2的二進制10&#xff0c;向…

sql中字段名中包含特殊字符的查詢方法

sql中字段名章包含特殊字符的查詢方法&#xff1a;例如包含""&#xff0c;student表中字段為&#xff1a;id“學號”、name"姓名"。 解決辦法&#xff1a;用英文下的 ""&#xff08;Tab鍵上面那個鍵,不需要shift&#xff09;把字段名包起來。如&…

tomcat Server.xml Context配置

有時候需要在tomcat里面做特殊的配置&#xff0c;來進行訪問&#xff1a; 例如你的程序 名字是hello端口是80 這時候你要訪問你的程序 就要用 localhost/hello 來訪問了。 但是怎么直接用 localhost來訪問呢&#xff1f;就需要進行tomcat 的配置了呢 看以下配置&#xff1a;to…

絕望,絕望、希望

晚上&#xff0c;經歷了一場小小的絕望&#xff0c;因為在論文方面&#xff0c;經過一些實踐檢驗&#xff0c;我發現之前所提出的理論竟然差別太大&#xff0c;這件事情讓人感到絕望&#xff0c;但是&#xff0c;也只有被逼繼續前行&#xff0c;沒有退路&#xff0c;前行才能慢…

【Python數據結構】——二叉查找樹(查找、構建、刪除、插入、打印)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2021/7/15 0:34 # Author : linlianqin # Site : # File : 二叉查找樹類實現&#xff08;查找、創建、刪除、插入、遍歷&#xff09;.py # Software: PyCharm # description:class TreeNode:def __init__(s…

ABB RAPID SOCKET編程

相傳在2009年6月11日&#xff0c;微博的鼻祖t-w-i-t-t-e-r還沒有被封鎖的時候&#xff0c;于仁頗黎寫了了一個東西可以將staubli機器人在運行時的狀態&#xff0c;實時發送上去&#xff0c;可以被實時的查看&#xff0c;任何一個人都可以查看&#xff0c;于是就有了這個名為TWI…

Plupload文件上傳組件使用API

Plupload有以下功能和特點&#xff1a; 1、擁有多種上傳方式&#xff1a;HTML5、flash、silverlight以及傳統的<input type”file” />。Plupload會自動偵測當前的環境&#xff0c;選擇最合適的上傳方式&#xff0c;并且會優先使用HTML5的方式。所以你完全不用去操心當前…

廣告主產品推詞中的NLP

加詞&#xff0c;加產品&#xff0c;調價是廣告主的核心問題&#xff0c;為了解決廣告主加詞的問題在阿里巴巴以及速賣通的賬戶后臺提供了加詞利器——先知&#xff0c;一鍵解決廣告主煩惱&#xff0c;從此不再為加詞而憂愁。一 引言 在目前付費搜索引擎中&#xff0c;買詞和競…

Android 動態設置 layout_centerInParent

RelativeLayout.LayoutParams rp new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);rp.addRule(RelativeLayout.CENTER_IN_PARENT);記錄一下轉載于:https://www.cnblogs.com/IWings/p/6097134.html

tidevice.exceptions.MuxServiceError: Could not start service: com.apple.testmanagerd.lockdown.secure

錯誤是在進行利用pycharm IDE和airtest框架進行蘋果手機自動化測試遇到的 錯誤具體如下 [I 210715 10:32:34 _device:572] ProductVersion: 14.6 [I 210715 10:32:34 _device:551] Download https://tool.appetizer.io/iGhibli/iOS-DeviceSupport/raw/master/DeviceSupport/14…

機器人 工具坐標系的標定

概念 工具坐標系是把機器人腕部法蘭盤所握工具的有效方向定為Z軸&#xff0c;把坐標定義在工具尖端點&#xff0c;所以工具坐標的方向隨腕部的移動而發生變化。 工具坐標的移動&#xff0c;以工具的有效方向為基準&#xff0c;與機器人的位置、姿勢無關&#xff0c;所以進行相…

Linux內核分析— —計算機是如何工作的(20135213林涵錦)

實驗部分 &#xff08;以下命令為實驗樓64位Linux虛擬機環境下適用&#xff0c;32位Linux環境可能會稍有不同&#xff09; 使用 gcc –S –o main.s main.c -m32命令編譯成匯編代碼&#xff0c; int g(int x){ return x 6;} int f(int x){ return g(x);} int main(void){ r…

apache域名跳轉

①編輯虛擬主機配置文件/usr/local/apache2.4/conf/extra/httpd-vhosts.conf如下<VirtualHost *:80>DocumentRoot "/data/wwwroot/111.com"ServerName 111.comServerAlias www.example.com 2111.com.cnErrorLog "logs/111.com-error_log"CustomLog …

php 畫圖片2

<?php// 使用php操作gd庫做圖// 1. 創建一個畫布資源$im imagecreatetruecolor(200, 50);// 2. 創建背景色// 2.1 得到背景顏色$bg_color imagecolorallocate($im, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255));// 2.2 填充畫布imagefill($im, 0, 0, $bg_c…