我正在尝试使用Facebook Android SDK登录Facebook,但状态回调仅在OPENING会话状态下触发一次.之后,Facebook登录活动显示没有内容(我知道它是那个活动,因为它具有我title_facebook_login在strings.xml中设置的标题)一小段时间,并在一秒钟内消失.没有其他回调被触发,没有例外,没有崩溃.它只是在我最初的活动中永远等待.这是我的代码:
Session.openActiveSession(parent, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
if(state == SessionState.OPENED){
String accessToken = session.getAccessToken();
}
}
});
Run Code Online (Sandbox Code Playgroud)
为什么回调不会触发SessionState.OPENED(或创建,甚至是关闭)但只打开?
我有一个文本视图,我想检测链接,但是当触摸点没有链接时,它应该传播触摸到下面的视图(它当前没有).它将包含在表格视图单元格中,如果用户点击链接,它应该交互(它可以工作),但是当点击另一个点时,它应该选择表格视图单元格.
我需要文本无法选择,所以我遵循/sf/answers/1908549961/并实施:
-(BOOL)canBecomeFirstResponder{
return NO;
}
Run Code Online (Sandbox Code Playgroud)
它也没有在此之前发送下面的触摸事件,但我已经包括它只是它干扰解决方案的情况.
我想在我的应用程序中包含动态类型,并且希望它在运行时能够响应文本大小更改,而无需重新启动应用程序(当我重新启动时,它会成功应用新大小)。
我已经UIContentSizeCategoryDidChangeNotification在我的应用程序委托中实现了,并在上触发了一个通知applicationDidBecomeActive:,通知我的视图控制器。在视图控制器的处理程序方法中,我尝试过:
[self.view setNeedsDisplay];[self.view setNeedsLayout];[self.view invalidateIntrinsicContentSize];但是似乎没有任何作用。它什么也没做。当应用程序激活时,它被称为(击中断点),并且确实被最前面的视图调用,但是没有任何变化。
如何在运行时使我的应用动态响应类型更改?
我知道我可以使用__kindof关键字来使用 Objective-C 的轻量级泛型,例如
NSArray<__kindof BaseClass*> *myArray;
Run Code Online (Sandbox Code Playgroud)
这将删除将数组中的任何对象分配给派生类的任何警告。
然而,BaseClass我有,而不是BaseProtocol,例如,我所有有问题的类都将符合BaseProtocol,而不管它们的基类如何。我想使用轻量级泛型来规定“我的数组由符合 的元素组成BaseProtocol,但它们可以是任何类”。
例如,在 C# 中,我可以说:List<IMyInterface>这意味着列表由实现IMyInterface接口的元素组成(我知道 C# 具有强大的泛型,而 Objective-C 只有不会阻止编译的轻量级泛型,但你明白了) .
有什么办法可以在 Objective-C 上实现这个功能吗?
例如我想写
NSArray<__kindof id<MyProtocol>> //compiles, but as the generic argument is "id", it accepts any object, including invalid ones
Run Code Online (Sandbox Code Playgroud)
或者
NSArray<id<__kindof MyProtocol>> //doesn't compile
Run Code Online (Sandbox Code Playgroud)
这可能吗?
更新:
这是一个完整的自包含代码:
@protocol MyProtocol
@end
@interface MyClass : NSObject<MyProtocol>
@end
@implementation MyClass
@end
@interface AnotherClass : NSObject
@end
@implementation AnotherClass
@end …Run Code Online (Sandbox Code Playgroud) 我使用以下代码来提取深度图(按照苹果自己的示例):
- (nullable AVDepthData *)depthDataFromImageData:(nonnull NSData *)imageData orientation:(CGImagePropertyOrientation)orientation {
AVDepthData *depthData = nil;
CGImageSourceRef imageSource = CGImageSourceCreateWithData((CFDataRef)imageData, NULL);
if (imageSource) {
NSDictionary *auxDataDictionary = (__bridge NSDictionary *)CGImageSourceCopyAuxiliaryDataInfoAtIndex(imageSource, 0, kCGImageAuxiliaryDataTypeDisparity);
if (auxDataDictionary) {
depthData = [[AVDepthData depthDataFromDictionaryRepresentation:auxDataDictionary error:NULL] depthDataByApplyingExifOrientation:orientation];
}
CFRelease(imageSource);
}
return depthData;
}
Run Code Online (Sandbox Code Playgroud)
我将此称为:
[[PHAssetResourceManager defaultManager] requestDataForAssetResource:[PHAssetResource assetResourcesForAsset:asset].firstObject options:nil dataReceivedHandler:^(NSData * _Nonnull data) {
AVDepthData *depthData = [self depthDataFromImageData:data orientation:[self CGImagePropertyOrientationForUIImageOrientation:pickedUiImageOrientation]];
CIImage *image = [CIImage imageWithDepthData:depthData];
UIImage *uiImage = [UIImage imageWithCIImage:image];
UIGraphicsBeginImageContext(uiImage.size);
[uiImage drawInRect:CGRectMake(0, 0, uiImage.size.width, uiImage.size.height)];
UIImage *newImage …Run Code Online (Sandbox Code Playgroud) 我是 React Native 的新手,正在尝试将我的 React Native 类组织到模块中,以摆脱“ import from '../../../”混乱。这是我非常简单的文件夹结构:
按照此处的教程,我package.json为每个文件夹构建了这样的结构:
{
"name": "@foldername"
}
Run Code Online (Sandbox Code Playgroud)
现在,我尝试导入Page(此时它只是一个组件超类,在文件中默认导出):
import Page from '@app/components/core';
但无法解决。我也尝试过:
import Page from '@app/@components/@core';
import { Page } from '@app/@components/@core';
import { Page } from '@app/components/core';
import { Page } from 'app/components/core';
他们似乎都没有工作。我也尝试了所有没有@符号的方法(从包文件和导入语句中删除它),但没有效果。
我如何组织我的组件以这种方式工作(如果我知道@前面的标志是做什么的,那就太好了,因为我也看过一些没有它的教程)?
这是我的package.json根文件夹中的内容(如果有帮助的话)(没有接触过它,这是由创建的方式react-native init):
{
"name": "redacted",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"react": …Run Code Online (Sandbox Code Playgroud) 我在 React Native 应用程序中使用 React Navigation 3.11,我想自定义堆栈导航中的后退按钮。在文档中它说:
标题背景图片
React 元素或组件以在标题的后退按钮中显示自定义图像。当一个组件被使用时,它在渲染时会收到一些 props (tintColor, title)。默认为带有 react-navigation/views/assets/back-icon.png 后退图像源的 Image 组件,这是平台的默认后退图标图像(iOS 上为 V 形,Android 上为箭头)。
这是我的配置:
let navigationRouteConfigMap : NavigationRouteConfigMap = {
_main:
{screen: page, navigationOptions:
{
[...]
headerBackTitle: '',
headerTruncatedBackTitle: '',
headerBackImage: Images.backArrow,
}
}
}
let stackNavigatorConfig:StackNavigatorConfig = {
headerBackTitleVisible: false
}
return createStackNavigator(navigationRouteConfigMap, stackNavigatorConfig)
Run Code Online (Sandbox Code Playgroud)
我的配置中还有其他页面,所有页面都具有相同的共享导航选项和自定义标题背景图像。但是,在我的应用程序中,它呈现默认的后退箭头。(headerBackTitleVisible: false虽然有效)
我究竟做错了什么?
我正在使用 TypeScript/Vscode 来编写我的 React Native 应用程序。我希望我的自定义组件上的代码完成样式就像 React Native 自己的View组件一样。
stylepropView定义如下:
style?: StyleProp<ViewStyle>;
Run Code Online (Sandbox Code Playgroud)
当我在我自己的组件的 props 上尝试时:
type MyViewProps = { style?:StyleProp<ViewStyle> }
class MyView extends Component<MyViewProps>{ ... }
Run Code Online (Sandbox Code Playgroud)
并尝试按照我style在常规视图中使用的方式使用它:
<MyView style={{top:-20}}/>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Type '{ style: { top: number; }; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<Pick<MyViewProps, never>, any, any>> & Readonly<Pick<MyViewProps, never>> & Readonly<...>'.
Property 'style' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<Pick<MyViewProps, never>, any, any>> & Readonly<Pick<MyViewProps, never>> & Readonly<...>'.ts(2322) …Run Code Online (Sandbox Code Playgroud) intellisense typescript react-native visual-studio-code typescript3.0
我正在尝试将现有样式与 React Native 的常规方法中的额外样式合并StyleSheet.create:
const styles = StyleSheet.create({
blurView:{
...StyleSheet.absoluteFill,
borderRadius: 24
},
});
Run Code Online (Sandbox Code Playgroud)
但是我在网上收到以下错误...StyleSheet.absoluteFill:
Spread types may only be created from object types.
我究竟做错了什么?我知道我可以将数组传递给styleprop,但我只是好奇为什么这不起作用。
我正在开发我的 React Native (TypeScript) 应用程序,今天突然(没有更新,没有更改设置)我的 Intellisense 开始只显示第一个建议,无论如何:
这个问题不是特定于特定类的,我已经多次重新启动 Vscode(重新启动 TS 语言服务器,从~/Library/Caches/(Code文件夹和com.microsoft基本上以开头的所有内容)中删除了所有 Vscode 缓存,但无济于事。
我怎样才能摆脱它?(Vscode Insiders 1.51.0(这个版本已经使用了好几天没有问题),TypeScript 4.0.5)
react-native ×4
ios ×3
typescript ×3
intellisense ×2
uiview ×2
android ×1
avdepthdata ×1
casting ×1
covariance ×1
es6-modules ×1
facebook ×1
generics ×1
ios12 ×1
ios9 ×1
javascript ×1
layout ×1
objective-c ×1
reactjs ×1
text ×1
touch ×1